我想.on()
用于在我的 jquery 中侦听输入文本的一些事件,这是我的代码,但它在我第一次按下键时不起作用:
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e)
{
if($(e.target).val()!='')
console.log(e.which);
})
我想.on()
用于在我的 jquery 中侦听输入文本的一些事件,这是我的代码,但它在我第一次按下键时不起作用:
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e)
{
if($(e.target).val()!='')
console.log(e.which);
})
keydown 事件被触发,但此时尚未添加角色。所以检查值是否为空是行不通的。你应该尝试这样的事情:
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e)
{
if($(e.target).val()!='' || e.type == 'keydown')
console.log(e.which);
})
有关 keydown 和 keyup 值的演示,请查看http://jsfiddle.net/vtUdE/(查看您的控制台日志)
这是我认为的解决方案,它只需要一点睡眠(它正在工作:-O):
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e) {
setTimeout(function() {
if($(e.target).val()!='')
console.log(e.which);
},1);
});
根据您上面的评论:
input[data-input_id=topNavigBar_SearchInput], input[data-input_id=drawer_popup_SearchInput], input[data-input_id=setdevice_popup_renameInput], input[data-input_id=has_holdertext]
在这些选择器中,id 应该有引号。因此,您的选择应如下所示:
$("input[data-input_id='topNavigBar_SearchInput'], input[data-input_id='drawer_popup_SearchInput'], input[data-input_id='setdevice_popup_renameInput'], input[data-input_id='has_holdertext']").on('...
尝试像我在这里发布的那样对选择器进行硬编码,看看事件处理程序是否有效。
你确定这keydown
不起作用吗?
试试这个并将结果写给我们
console.log(e.type + ':' + e.which)
;
这是一个小提琴:http: //jsfiddle.net/3F9FP/
您可以尝试使用 keypress() 代替:
$(s.join(", ")).keypress(function(e) {
console.log(e.which);
});
确保您的选择器 $(s.join(", ")) 返回一个元素(非空)
在 vanilla javascript 中,您可以将“输入”事件附加到输入字段并立即获取值。
HTML:
<input type="text" name="text-input" value="" />
Javascript:
function handleInput(e) {
console.log(e.target.value)
}
const textInput = document.querySelector("input[name='text-input']");
textInput.addEventListener("input", handleInput);