[英]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.