2013-04-29 72 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)' />