我有一个文本框。我必须验证特殊字符和最多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 :(得分:1)
onKeyup
应该是:
<input type="text" class="textFlag" onkeydown="ValidateFlagText(this)"/>
onkeypress
:在按下某个键时调用JavaScript代码
onkeydown
:在按下某个键(但尚未发布)时调用JavaScript代码
onkeyup
:在按下按键后释放按键时调用JavaScript代码。
答案 1 :(得分:1)
根据MDN上的this,'自动重复'(按住键时会发生这种情况),触发事件:keydown,keypress,keydown,keypress ......然后最后是一个键盘。< / p>
如果要检查每个新角色的长度,请更改标记以收听keydown或keypress。
答案 2 :(得分:0)
我同时使用onkeydown
和onkeyup
并解决了问题。像这样使用:
<input type='text' id='titleNewColumn' onkeydown='ValidateFlagText(this)' onkeyup='ValidateFlagText(this)' />