我希望使用if语句只在用户输入字母或数字时运行代码。
我可以使用以下代码:
if (event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50 || ...) {
// run code
}
有没有更简单的方法?也许有些按键在所有网络浏览器中都不能使用?
我希望使用if语句只在用户输入字母或数字时运行代码。
我可以使用以下代码:
if (event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50 || ...) {
// run code
}
有没有更简单的方法?也许有些按键在所有网络浏览器中都不能使用?
如果你想检查一定范围的字母,可以使用大于和小于符号:
if (event.keyCode >= 48 && event.keyCode <= 57) {
alert('input was 0-9');
}
if (event.keyCode >= 65 && event.keyCode <= 90) {
alert('input was a-z');
}
使用正则表达式进行更动态的检查:
const input = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(input)) {
alert('input was a letter, number, hyphen, underscore or space');
}
请查看MDC文档,了解keyCode
属性与which
属性之间的差异以及它们适用于哪些事件。
String.fromCharCode
可以将非可键入的按键转换为字符。例如,当我在我的 Mac 上按下左命令键时,会得到“[”,而右键则会得到“]”。 - devios1keyCode
。 - Andy Eevent.key
和现代JS!不再需要数字代码。您可以直接检查key
。
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)
(key >= "a" && key <= "z")
几乎会对任何东西返回true
(例如,当 key = Insert
时)。/[a-z]/i.test('Insert')
也是如此。 - torvinlength !== 1
检查。修复了正则表达式。 - Giboltevent.key.length === 1
是否可以安全地覆盖每个字母、数字、空格和符号?我一直在测试 key.length 并发现控制键的长度大于 1。但仍不确定这是否是一个好方法。 - Alwin Keslerevent.key.length
- undefined首先,如果你要这样做,请确保它是在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
事件。
if (event.keyCode >= 48 && event.keyCode <= 90) {
// the key pressed was alphanumeric
}
对于数字值:
function validNumeric() {
var charCode = event.which ? event.which : event.keyCode;
var isNumber = charCode >= 48 && charCode <= 57;
if (isNumber) {
return true;
} else {
return false;
}
}
这里,48到57是数字值的范围。
对于字母数值:
function validAlphabetic() {
var charCode = event.which ? event.which : event.keyCode;
var isCapitalAlphabet = charCode >= 65 && charCode <= 90;
var isSmallAlphabet = charCode >= 97 && charCode <= 122;
if (isCapitalAlphabet || isSmallAlphabet) {
return true;
} else {
return false;
}
}
这里,65至90是大写字母(A-Z)的范围,而97至122是小写字母(a-z)的范围。
正如 @Gibolt 所说,你应该使用 event.key
。
因为 charCode
、keyCode
和 which
正在被弃用。
<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">
您可以将HTML表单简单地添加到输入字段中,如下所示:
...onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"
您不需要任何函数。此验证仅适用于电子邮件
字段。不要使用命名或数字。如果要使用数字,请删除电子邮件正则表达式,如下所示:
...onkeypress ="return /[a-z ]/i.test(event.key)" required accesskey="4"
仅限数字:
...onkeypress ="return /[0-9]/i.test(event.key)" required accesskey="4"
<div class="form-group">
<input type="Email" class="form-control " id="EMAILADDRESS" name="EMAILADDRESS" placeholder="Email Address" autocomplete="false" onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"/>
</div>
$('#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的答案,允许我们删除字符,在输入框中导航并过滤掉每个非数字字符。
使用正则表达式通过动态处理在JavaScript中接受数字或字母。
为特定控件添加onkeypress
事件。
onkeypress="javascript:return isNumber(event)"
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;
}
}
keycode
和which
已经被弃用,建议使用KeyboardEvent.key
。 - Stephen Tetreault