我有一个可以占用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);
}
});
但不起作用..
答案 0 :(得分:3)
最简单的解决方案是始终重新添加所有新行:
$('.mydesc').keyup(function () {
this.value = this.value
.replace(/[\n\r]+/g, "")
.replace(/(.{10})/g, "$1\n");
});
答案 1 :(得分:1)
这样的事情可以做到:
$('#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的末尾(因为它"覆盖"值)
<强>更新强>
在完成编辑textarea之后,您实际上可能会更好地进行格式化 - 即使用模糊();
$('#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);
});
虽然它没有实时完成 - 但删除/编辑内容时效果更好
答案 2 :(得分:0)
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);
});
这实际上忽略了退格键,因此至少保留了这种交互。