我想只在用户输入字母或数字时才使用if语句来运行代码。
我可以用
if(event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
// run code
}
有更简单的方法吗?也许某些密钥代码在所有网络浏览器中都不起作用?
答案 0 :(得分:124)
如果要检查一系列字母,可以使用大于和小于:
if (event.keyCode >= 48 && event.keyCode <= 57)
alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
alert("input was a-z");
要进行更动态的检查,请使用正则表达式:
var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
alert("input was a letter, number, hyphen, underscore or space");
请参阅MDC documentation了解keyCode
属性,该属性解释了该属性与which
属性之间的区别以及它们适用于哪些事件。
答案 1 :(得分:22)
首先,如果您这样做,请确保它在keypress
事件中,这是您可以可靠地获取有关用户键入的字符的信息的唯一事件。然后我会使用Andy E建议的方法:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
alert("Letter or number typed");
}
};
如果您要检查退格键,我会使用keydown
事件并检查keyCode
为8,因为多个浏览器(包括Chrome)都不会触发keypress
退格键的事件。
答案 2 :(得分:15)
event.key
和现代JS!没有数字代码了。你可以直接检查密钥。
const key = event.key.toLowerCase();
if (key.length !== 1) {
return;
}
const isLetter = (key >= "a" && key <= "z");
const isNumber = (key >= "0" && key <= "9");
if (isLetter || isNumber) {
// Do something
}
您也可以使用简单的正则表达式。 ^$
确保1个字符,i
忽略大小写
/^[a-z0-9]$/i.test(event.key)
或单独:
const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)
答案 3 :(得分:7)
if(event.keyCode >= 48 && event.keyCode <= 90) {
//the key pressed was alphanumeric
}
答案 4 :(得分:0)
号码验证,对我来说很好用
$(document).ready(function () {
$(".TxtPhone").keypress(function (e) {
var key = e.charCode || e.keyCode || 0;
// only numbers
if (key < 48 || key > 58) {
return false;
}
});
});
答案 5 :(得分:0)
您还可以将 charCode 与 onKeyPress 事件一起使用:
if (event.charCode > 57 || event.charCode < 48) {
itsNotANumber();
}
else {
itsANumber();
}
答案 6 :(得分:0)
使用$.isNumeric(value);
返回类型是boolean
答案 7 :(得分:0)
使用正则表达式通过动态过程使用javascript接受数字或字母。
为特定控制添加onkeypress事件
onkeypress =&#34; javascript:return isNumber(event)&#34;
function numOnly(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[0-9]/i.test(charStr)) {
return true;
}
else
return false;
}
function Alphanum(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
return true;
}
else
return false;
}
&#13;
答案 8 :(得分:0)
$('#phone').on('keydown', function(e) {
let key = e.charCode || e.keyCode || 0;
//32 = space - border of visible and non visible characters - allows us to backspace and use arrows etc
//127 - delete
if (key > 32 && (key < 48 || key > 58) && key !== 127) {
e.preventDefault();
return false;
}
});
修改@ user4584103的答案,允许我们删除字符,并在输入框中导航并过滤掉每个不是num字符
答案 9 :(得分:0)
正如@Gibolt所说, 你应该使用event.key
因为charCode,keyCode和哪些被弃用。
答案 10 :(得分:0)
对于数值:
function ValidNumeric()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if (charCode>=48 && charCode<=57)
{
return true;
}
else
return false;
}
此处,数值范围是48和57。
对于字母:
function ValidAplpha()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if(charCode >= 65 && charCode <= 90 || charCode>=97 && charCode<=122)
{
return true;
}
else
return false;
}
此处,大写字母大写字母(A-Z)的范围是65到90,小字母大写字母(a-z)的范围是97到122
答案 11 :(得分:0)
要在使用 <input>
或 <textarea>
时检测字母和数字,您可以使用 input
事件。
当 <input>
或 <textarea>
值更改时会触发此事件,因此无需担心 Alt、Shift、箭头等键. 甚至更多 - 如果您使用鼠标剪切部分文本,事件也会触发。
var element = document.getElementById('search');
element.addEventListener('input',function(e){
console.log(element.value);
});
<input id="search" type="text" placeholder="Search" autocomplete="off">