[英]Add line break to text area output after a certain number of characters in a form
[英]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");
});
这样的事情可以做到:
$('#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.