2013-04-29 78 views
1

我有一個文本框。我必須驗證特殊字符和最多15個字符的長度。 我已經使用下面的代碼進行驗證。在輸入特殊字符和特定長度時驗證文本框

<input type="text" class="textFlag" onkeyup="ValidateFlagText(this)"/> 


//function checks special character entry and total 15 
//character checks 
function ValidateFlagText(textBoxObj) { 

    //skip events for space and control keys 
    if (event.keyCode != 37 && event.keyCode != 39) { 
     var originalValue = textBoxObj.value; 
     var charCount = textBoxObj.value.length; 

     if (!(!originalValue.match(/[_\W]/))) { 
      alert("special characters not allowed"); 
      textBoxObj.value = originalValue.substring(0, charCount - 1); 
     } 

     if (charCount > 15) { 
      alert("maximum 15 characters allowed"); 
      textBoxObj.value = originalValue.substring(0, charCount - 1); 
     } 

     textBoxObj.value = textBoxObj.value.substring(0, 15); 
    } 
} 

這裏的一個問題是,如果我持有並按下。我創造了一個小提琴。 http://jsfiddle.net/mnsscorp/QGRHP/6/

在此先感謝。

+0

檢查我的回答,我的作品。它不會接受任何特殊字符 – 2013-04-29 07:27:36

回答

1

根據MDN上的this,'自動重複'(當您按住一個鍵時會發生什麼),觸發事件:keydown,keypress,keydown,keypress ...然後最後一個keyup。

如果你想檢查每個新角色的長度,那麼改變你的標記來監聽keydown或keypress。

+0

是的,我只是包括按鍵事件..它worked..Thanks。 – mns 2013-04-29 12:57:22

1

onKeyup應該是:

<input type="text" class="textFlag" onkeydown="ValidateFlagText(this)"/> 

onkeypress:調用JavaScript代碼,當有鍵按下

onkeydown:調用當一個鍵被按下(但尚未發行)的JavaScript代碼

onkeyup:當按鍵被釋放後調用JavaScript代碼。

0

我同時使用了onkeydownonkeyup並解決了問題。使用這樣的:

<input type='text' id='titleNewColumn' onkeydown='ValidateFlagText(this)' onkeyup='ValidateFlagText(this)' />