2016-03-15 54 views
1

我有一個textarea,其屬性maxlength設置爲350 &它工作正常,它也將輸入/換行符作爲字符計數。Textarea | val()。長度不在計數中的「Enter/Line Breaks」

我也有顯示一個錯誤消息,如果用戶嘗試鍵入超過或達到350字符限制爲此我使用此代碼:

$("textarea").keyup(function (e) { 
    if($(this).val().length >=350){ 
     $('.error').show(); 
    }else{ 
     $('.error').hide(); 
    } 
}); 

它的工作原理,但在Chrome不計輸入/換行符,但如果用戶在多行中破解文本,maxlength會導致結果,但他確實在350個字符後停止輸入,但沒有看到任何消息。

這裏是玩小提琴:https://jsfiddle.net/udp9oxx4/

注意:此錯誤僅發生在鉻。

+0

是它顯示了在鉻 –

+1

350個charecters我只是通過這一個燒燬的味精。正如你所說,textarea的價值不包括CR/LF。我有一些通過客戶端驗證的代碼,但在服務器上失敗,因爲該值的字符數超過了允許的值。 – costa

回答

1
$("textarea").keyup(function (e) { 

var isChrome = window.chrome; 
if(isChrome){ 
var value = $(this).val().replace(/(\r\n|\n|\r)/g," "); 
} 
else{ 
var value = $(this).val(); 
} 

     if(value.length >=350){ 
      $('.error').show(); 
     }else{ 
      $('.error').hide(); 
     } 
    }); 

Chrome計算換行符爲2個字符,因此它計數字符錯誤。只需將該代碼添加到該函數的前面,它就可以正常工作。

https://jsfiddle.net/3wpqd4nr/

小提琴

+0

謝謝,我剛剛在mac safari上測試了我的小提琴,並且bug也存在,應該爲'window.safari'添加一個條件,我想它必須使用鉻和Safari瀏覽器JavaScript引擎。 –

+0

我現在有點忙,但是我們將不得不尋找這是否是一個js引擎問題,如果是這樣的話應該基於js引擎。 –