javascript - 拦截输入输入

标签 javascript jquery

有没有办法在用户输入的值出现在元素中之前拦截它?我尝试使用 Object.defineProperty 但它似乎不适用于 InputElement.value 因为

var value;
Object.defineProperty($('input')[0], 'value', {
    get: function() {return value},
    set: function(val) {console.log(val); value = val;}
});

似乎没有改变任何行为。或者 oninput/onchange 是唯一的选择吗?因为我宁愿让我的代码在浏览器之前执行。

http://jsfiddle.net/zpmu1xcu/

最佳答案

如果您想在浏览器输入文本之前检测输入,可以使用 Element.onkeydown属性(property)。一旦按下该键,在浏览器解释该操作之前,就会触发此事件。

var demo_i = document.getElementById('demo_i');
var demo_d = document.getElementById('demo_d');

demo_i.onkeydown = function(e) {
    demo_d.textContent = e.which;
    // Returning false stops the event from going any further
    return false;
}
<input id="demo_i"><div id="demo_d"></div>

关于javascript - 拦截输入输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916326/

相关文章:

javascript - 检测函数是否被执行

javascript - 如何使用javascript清除 Canvas 层并将其另存为图像

javascript - 在javascript中将数字转换为字符串的正确方法

javascript - 如何在 iframe 内单击没有 id 或名称的按钮?

javascript - 如何仅在鼠标悬停监听器未激活时执行函数

javascript - 如何在不破坏代码的情况下删除链接

jquery - 如何强制动态 <ul> 为其父级高度的 100%,不多也不少?

Javascript 推送数组高级

jquery - 如何从弹出窗口获取值给父级

javascript - jQuery 分页结果页面