[英]Only accept numbers and letters in input
我只想在输入中接受字母、数字和逗号。
我试过了
document.getElementById('input').onkeydown = function (e) {
const charCode = (typeof e.which === 'number') ? e.which : e.keyCode;
return (charCode >= 48 && charCode <= 57) || // numbers
(charCode >= 65 && charCode <= 90) || // letters
charCode === 188 // comma
};
它可以工作,但它也拒绝使用箭头键、输入、删除和退格键(以及可能的其他重要键)。
我可以添加另一个or
子句并判断用户是否按下了键箭头、输入、删除或退格,但这是正确的方法吗? 我错过了一些钥匙吗? 平板电脑、台式机和智能手机上的密钥代码是否相同?
如果我还想确保用户永远不会输入两个连续的逗号怎么办? 所以它不会接受a,b,,c
?
根据MDN, 则charCode和它都过时了,他们建议使用keyboardEvent.key 。
您为这个问题标记了regex
很有趣,但是我没有在您的问题中明确看到正则表达式。 但是,下面的示例就足够了。 有关大多数浏览器中本机正则表达式支持的更多信息,请参见String.prototype.match 。
document.getElementById('input').onkeydown = function (e) { var value = e.target.value; //only allow az, AZ, digits 0-9 and comma, with only 1 consecutive comma ... if (!e.key.match(/[a-zA-Z0-9,]/) || (e.key == ',' && value[value.length-1] == ',')) { e.preventDefault(); } };
Type Value: <input id="input" type="text" />
您也可以使用字符类 -例如\\d
和\\w
,尽管\\w
包含下划线字符( _
):
document.getElementById('input').onkeydown = function (e) { var value = e.target.value; //only allow az, AZ, digits 0-9 and comma, with only 1 consecutive comma ... if (e.key.match(/_/) || !e.key.match(/[\\w\\d,]/) || (e.key == ',' && value[value.length-1] == ',')) { e.preventDefault(); } };
Type Value: <input id="input" type="text" />
if ((event.keyCode >= 48 && event.keyCode <= 90)) 这对我有帮助,它只允许输入数字和字母
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.