2013-06-19 60 views
3

我有一个每行限制字符数的textarea。它的功能很好。javascript textarea每行字符数限制

function limitRow(){ 
    var count = 1; 
    var charsPerLine = row; // 30 characters 
    var maxLines = 20; 

    $('.AD_Text_textarea').keydown(function (e) { 
     var v = $(this).val(), 
     vl = v.replace(/(\r\n|\n|\r)/gm, '').length, 
     lineCount = $(this).val().split("\n").length; 

     if (parseInt(vl/count) >= charsPerLine) { 
      if (lineCount >= maxLines) { 
       return false; 
      } 
      $(this).val(v + "\n"); 
      count += 1; 
     } 
    }); 
} 

我的问题是,如果我要多多1号线,打字例如4行文字后,例如光标位置4一些文字输入上,然后开始的行计数器计数,并打破60后的行字符和跳到第4行的末尾。
我该如何解决此问题? 我希望,很明显。 (IAM对不起,我的英语)

+0

在我看来,最好的选择是对响应按键做这个给忘了,并做到这一点的模糊。这样,你不仅能避免跳跃问题,你允许用户改变通过编辑菜单或用鼠标的文本。 (顺便说一句,你的英语很好。) – nnnnnn

+0

我该怎么办呢? – Zeynep

+0

只是改变'$( 'AD_Text_textarea ')。KEYDOWN()''到$('。AD_Text_textarea')。模糊()',关注@ NNNNNN的[优]的建议。 – pete

回答

0

试试这个

var count = 1; 
    var charsPerLine = 30; // 30 characters 
    var maxLines = 2; 
    $('.AD_Text_textarea').keydown(function (e) { 
     var this_input = $(this); 
     var value = this_input.val().split('\n'); 

     if (value.length < maxLines) { 
      if (value[parseInt(value.length) - 1].toString().length > charsPerLine) { 
       alert(value.length.toString()); 
       this_input.val(this_input.val() + '\n'); 
      } 

     } 
     else { 
      return false; 
     } 
    }); 
+0

为什么这会有帮助? – nnnnnn