我必須將TextArea的長度限制爲2個字符。我發現了很多答案。閱讀這些答案我已經達到了以下代碼。它有'keydown'和'keyup'事件處理程序。使用jQuery限制文本區域長度的代碼有什麼缺陷?
- 你認爲這是正確的嗎?
- 它可以在所有主流瀏覽器中使用嗎?
http://jsfiddle.net/Lijo/VAYze/1/
- 注:我不需要一個錯誤信息顯示。因此正則表達式驗證對我來說不是一個好選擇。
- 注:我基於現有代碼尋找答案 - 不是一個全新的答案
- 注:鍵碼從http://www.asquare.net/javascript/tests/KeyCode.html簡稱和http://www.asquare.net/javascript/tests/KeyCode.html
UPDATE
要處理文本dragged
成文本區域,我沒有看到一個jQuery解決方案。我打算做regular expression validator
與EnableClientScript
=「false」。它將僅在服務器端進行驗證。這是爲了處理繞過現有jQuery操作的任何事情。 ASP Regular Expression Validator for Multi-line textbox
jQuery的
$(document).ready(function() {
var maxLength = 2;
$('.multiline').keydown(function (e) {
var existingText = $(this).val();
var existingLength = existingText.length;
if (existingLength >= maxLength)
{
if (maxLength > 0)
{
if (!checkSpecialKeys(e))
{
$(this).val(existingText.substring(0, maxLength));
$(this).css('color','red');
//Newly entered character not rendered since false is returned
e.preventDefault();
}
}
}
});
//To trim the text if a paste happens
$('.multiline').keyup(function (e) {
var newText = $(this).val();
var newLength = newText.length;
if (newLength > maxLength) {
if (maxLength > 0) {
$(this).val(newText.substring(0, maxLength));
$(this).css('color','red');
}
}
});
}
);
function checkSpecialKeys(e)
{
if (e.keyCode >= 48 && e.keyCode <= 90)
{
return false;
}
if (e.keyCode >= 96 && e.keyCode <= 111)
{
return false;
}
else
{
return true;
}
}
值可以通過拖動字面上裏面他們選中的文本來填充。不要忘記這種可能性。 – inhan
爲什麼不使用maxlenght屬性? – Stefan
它最終需要失去焦點,所以你可能想附加一個** change **事件,這顯然會觸發:'$('。multiline')。change(function(){console.log('changed!') })' – inhan