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/

提前致谢。

4

3 回答 3

1

onKeyup应该:

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

onkeypress: 当按键被按下时调用 JavaScript 代码

onkeydown:当一个键被按下(但尚未释放)时调用 JavaScript 代码

onkeyup: 当一个键被按下后被释放时调用 JavaScript 代码。

于 2013-04-29T07:22:42.230 回答
1

根据MDN 上的这个,“自动重复”(当你按住一个键时会发生这种情况)会触发事件:keydown、keypress、keydown、keypress ......然后最后是一个 keyup。

如果要检查每个新字符的长度,请更改标记以收听 keydown 或 keypress。

于 2013-04-29T07:25:29.570 回答
0

我两个都用了onkeydownonkeyup问题就解决了。像这样使用:

<input type='text' id='titleNewColumn' onkeydown='ValidateFlagText(this)' onkeyup='ValidateFlagText(this)' />
于 2014-07-04T15:17:42.073 回答