RegEx用于当前字符JavaScript

时间:2014-11-05 17:00:44

标签: javascript regex validation charat

我正在尝试验证字符,以确保它是一个字母(不是数字,符号等),然后才允许输入表单字段。我怎么能用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),但都无济于事。任何建议将不胜感激。

3 个答案:

答案 0 :(得分:1)

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

&#13;
&#13;
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; 
    }
}
&#13;
<input type="text" name="test" onkeypress="checkTest(event);"/>
&#13;
&#13;
&#13;

答案 1 :(得分: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/

答案 2 :(得分:-1)

您要找的是onkeypress事件。

&#13;
&#13;
<input type="text" onkeypress="myFunction()">

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