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

Javascript 在文本区域中的10个字符后放置换行符,javascript,jquery,Javascript,Jquery,我有一个可以容纳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 += '\

我有一个可以容纳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");
});

像这样的东西可以做到:

但是,请注意,它不能很好地用于删除字符。如果您尝试一下,您会注意到,当您实际删除一个字符并运行代码时,它会再次将您放在文本区域的末尾,因为它会覆盖该值

更新:

在他们编辑完文本区域后,你的格式可能会更好——例如使用模糊


虽然这不能实时完成,但在删除/编辑内容时效果会更好

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);
});

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

实际上我没有得到行start=start*2+start,为什么不直接启动*3?是要存储换行符,还是只在文本区域中显示换行符以进行格式化?可能是重复的
$('#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);
});
$('#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);
});