我正在尝试验证字符,以确保它是一个字母(不是数字,符号等),然后才允许输入表单字段。我怎么能用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)
,但都无济于事。任何建议将不胜感激。
答案 0 :(得分: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;
}
}
&#13;
<input type="text" name="test" onkeypress="checkTest(event);"/>
&#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
事件。
<input type="text" onkeypress="myFunction()">
<script>
function myFunction() {
alert("You pressed a key inside the input field");
}
</script>
&#13;