// Bind keydown event to all input type=text in form.
$("form input[type=text]").keydown(function (e) {
// Reference to keyCodes...
var key = e.which || e.keyCode;
// ONLY Allow Numbers, Backspace & Tab
if((key >= 48 && key <=57) || (key >= 96 && key <=105) || (key >= 8 && key <=9)) {
// Allow
return true;
} else {
// Deny
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
<label for="text1">Text Box:</label>
<input id="text1" type="text" placeholder="0">
</form>
我有以下代码,它将 keyDown 事件绑定(bind)到表单中文本类型的所有输入上。这效果很好。
事情没有发生的是, Optionally fixed virtual key codes 没有被困!
当每个不正确的 keyCode 不应触发时,为什么会发生这种情况?
// Bind keydown event to all input type=text in form.
$("form input[type=text]").keydown(function (e) {
// Reference to keyCodes...
var key = e.which || e.keyCode;
// ONLY Allow Numbers, Backspace & Tab
if((key >= 48 && key <=57) || (key >= 96 && key <=105) || (key >= 8 && key <=9)) {
// Allow
return true;
} else {
// Deny
return false;
}
});
最佳答案
尝试不同的方法怎么样?这是一个简单的 keyup 事件处理程序,它使用正则表达式在键入后立即删除所有非数字字符。
$("input[type=text]").on("keyup", function() {
var new_val = $(this).val().replace(/[^0-9]/g, '');
$(this).val(new_val);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
关于javascript - 表单输入VIRTUAL keyCode 捕获。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843549/