繁体   English   中英

在文本区域中的10个字符后放置换行符

[英]Put line break after 10 characters in text area

我有一个可以容纳10000个字符的文本区域。 我想将换行符放在10个字符后的文本区域值的每一行

这样的事情我想实现

11111111 1
111 111 11
11 11 11 1

以上所有行各有10个字符。

var start = 3
var times = 1;
$('.mydesc').keyup(function () {
    var len = $(this).val().length;
    if (len == start) {
        this.value += '\n';
        times = ++times;
        start= ((start * 2) + start);
    }
});

但不起作用..

最简单的解决方案是始终重新添加所有换行符:

$('.mydesc').keyup(function () {
    this.value = this.value
                     .replace(/[\n\r]+/g, "")
                     .replace(/(.{10})/g, "$1\n");
});

http://jsfiddle.net/s4cUz/

这样的事情可以做到:

http://jsfiddle.net/Zxuj7/

$('#test_textarea').keyup(function () {
   var new_stuff = $(this).val();
       new_stuff = new_stuff.replace(/[\n\r]+/g,""); // clean out newlines, so we dont get dups!
   var test = new_stuff.replace(/(.{10})/g,"$1\n");
   $(this).val(test);
});

但是,请注意,“删除”字符并不能很好地工作。 如果放手一搏,您会注意到,当您实际删除一个字符并运行代码时,它将再次使您进入文本区域的末尾(因为它“覆盖”了该值)

更新:

实际上,在他们完成了textarea的编辑之后,您可能会更好地格式化-即使用blur()

$('#test_textarea').blur(function () {
    // leaving the field... so lets try and format nicely now
    var new_stuff = $(this).val();
           new_stuff = new_stuff.replace(/[\n\r]+/g,""); // clean out newlines, so we dont get dups!
           new_stuff = new_stuff.replace(/(.{10})/g,"$1\n");
    $(this).val(new_stuff);
});

尽管这不能实时进行-在删除/编辑内容时效果更好

Andrew Newby脚本的增强版:

$('#test_textarea').keyup(function (e) {
     if (e.keyCode === 8) return; // Backspace
     var new_stuff = $(this).val();
     new_stuff = new_stuff.replace(/[\n\r]+/g,""); // clean out newlines, so we dont get dups!
     new_stuff = new_stuff.replace(/(.{10})/g,"$1\n");
     $(this).val(new_stuff);
});

这实际上忽略了退格键,因此至少保留了交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM