在键入特殊字符并具有特定长度时验证文本框

时间:2013-04-29 07:17:32

标签: javascript jquery

我有一个文本框。我必须验证特殊字符和最多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/

提前致谢。

3 个答案:

答案 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)

我同时使用onkeydownonkeyup并解决了问题。像这样使用:

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