2

我正在尝试验证一个字符以确保它是一个字母(不是数字、符号等),然后才能将其输入到表单字段中。我怎样才能用 JavaScript 做到这一点?

这是我尝试过的东西:

<script type="text/javascript">

function checkTest() {
    var letterValue = document.forms[0].test.value;
    var letterCheck = /[a-z]/i;
    var letterTest = letterValue.test(letterCheck);

}

</script>
<html>
    <body>
        <form>
            <input type="text" name="test" onkeypress="checkTest();"/>
        </form>
    </body>
</html>

此代码将检查值的字符串。我试过使用var letterLeng= letterValue.length,然后使用var letterChar = letterValue.charAt(letterLeng),甚至var letterChar = letterValue.charAt(letterLeng - 1)都无济于事。任何建议将不胜感激。

4

3 回答 3

1

向事件询问被按下的键然后测试它:

function checkTest(event) {
    event = event || window.event;
    if (!/[A-Za-z]/.test(String.fromCharCode(event.keyCode || event.which))) {
       if (event.preventDefault)
          event.preventDefault();
       else
          event.returnValue = false; 
    }
}
<input type="text" name="test" onkeypress="checkTest(event);"/>

于 2014-11-05T17:37:27.943 回答
0

我喜欢 Alex K 的回答,但我无法让“onkeypress”处理程序工作,所以我尝试使用 Jquery 进行一些操作。它不会阻止坏字母短暂出现,但会阻止它们被输入。

它使用 'keyup' 事件,这实际上使得在这种情况下检查密钥代码变得更加容易,因为您希望将其限制为 [a-zA-Z]

$("#myinput").on("keyup", function (e) {
    // Ignore the shift key.
    if (e.keyCode === 16) {
        return true;
    }

    if ((e.keyCode < 65 || e.keyCode > 90)) {
        var str = $("#myinput").val();
        $("#myinput").val(str.slice(0, str.length - 1));
    }
});

工作小提琴在这里:http: //jsfiddle.net/yaa9snce/

于 2014-11-05T18:03:57.883 回答
-1

您正在寻找的是onkeypress事件。

<input type="text" onkeypress="myFunction()">

<script>
function myFunction() {
    alert("You pressed a key inside the input field");
}
</script>

于 2014-11-05T17:02:43.250 回答