javascript - 表单输入VIRTUAL keyCode 捕获。如何?

标签 javascript html ecmascript-6

// 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/

相关文章:

javascript - AngularJS $范围未定义

javascript - 在javascript中传递一个函数

javascript - 在 JavaScript 中克隆表格行并删除值

Javascript 函数未被识别 : Uncaught ReferenceError: change is not defined

javascript - 如何预加载我网站和其他页面中的所有视频?

javascript - 使用 Javascript/JQuery 添加前缀到 img src

css - 如何根据值水平定位 div?

typescript - 我可以为 rest 参数传入一个数组吗?

javascript - es6 filter JSON返回undefined,filter对象没有

javascript - ES6 中的一行解构和重新分配?