2014-11-05 62 views
2

我想验证一个字符,以确保它是一个字母(不是数字,符号等),在它被允许进入表单字段之前。我怎么用JavaScript来做到这一点?当前字符的JavaScript RegExp

这里是我的尝试:

<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)和所有无济于事。任何意见将不胜感激。

回答

-1

你在找什么是onkeypress事件。

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

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

+0

我的意思是包括在我的代码。我的错。即使我这样做,我也无法得到正则表达式来检查当前键入的字符。它总是在检查后面一步。 – 2014-11-05 17:17:44

+0

@ turd.ferguson那是因为密钥还没有输入。当你从窗体中获取值时,它仍然没有字符。你需要做的是使用更高级的事件监听器。请参阅http://unixpapa.com/js/testkey.html – 2014-11-05 17:21:54

1

询问被按下的键事件对其进行测试:

0

我喜欢亚历克斯·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/