簡體   English   中英

在文本區域中的10個字符后放置換行符

[英]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");
});

http://jsfiddle.net/s4cUz/

這樣的事情可以做到:

http://jsfiddle.net/Zxuj7/

$('#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM