Javascript 在文本区域中的10个字符后放置换行符
我有一个可以容纳10000个字符的文本区域。我想把换行符放在文本区域值的每行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 += '\
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);
});