我希望使用.on()
来监听我的jquery中的输入文本的一些事件,这是我的代码,但是在第一次按下键时它没有在keydown上工作:
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e)
{
if($(e.target).val()!='')
console.log(e.which);
})
答案 0 :(得分:5)
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/(查看控制台日志)
答案 1 :(得分:1)
这是我认为的解决方案,它需要一点点睡眠(它正在工作:-O):
$(s.join(", ")).on('keyup paste change focus blur keydown', function(e) {
setTimeout(function() {
if($(e.target).val()!='')
console.log(e.which);
},1);
});
答案 2 :(得分:0)
您可以尝试使用keypress()代替:
$(s.join(", ")).keypress(function(e) {
console.log(e.which);
});
确保你的选择器$(s.join(“,”))返回一个元素(非空)
答案 3 :(得分:0)
答案 4 :(得分:0)
根据您的评论:
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('...
尝试对我在此处发布的选择器进行硬编码,看看事件处理程序是否有效。
答案 5 :(得分:0)
在普通javascript中,您可以将“ input”事件附加到输入字段并立即获取值。
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);