Javascript 提交中的jquery未正确处理,event.preventDefault()不工作
我用下面的HTML(在模态窗口中使用bootbox.js)得到了表单Javascript 提交中的jquery未正确处理,event.preventDefault()不工作,javascript,jquery,Javascript,Jquery,我用下面的HTML(在模态窗口中使用bootbox.js)得到了表单 但当我在#phrase_fld输入字段中按enter时,我会重新加载html页面,并在浏览器中将?dialog_field=some+new+phrase查询字符串附加到我的url中。可能e.preventDefault()不起作用?在我的控制台中,我看到isDefaultPrevented:f。任何关于如何解决这个问题的想法都是受欢迎的。谢谢。表单提交不会作为keyup事件的默认行为触发。为时已晚 您需要在keydown或k
但当我在
#phrase_fld
输入字段中按enter
时,我会重新加载html页面,并在浏览器中将?dialog_field=some+new+phrase
查询字符串附加到我的url中。可能e.preventDefault()
不起作用?在我的控制台中,我看到isDefaultPrevented:f
。任何关于如何解决这个问题的想法都是受欢迎的。谢谢。表单提交不会作为keyup
事件的默认行为触发。为时已晚
您需要在keydown
或keypress
事件期间捕获它。尝试以下代码:
$('body').delegate('#phrase_fld', 'keypress', function(e) {
if(e.keyCode === 13) {
e.preventDefault();
console.log(e);
$(this).parent().parent().parent().parent().parent().find('button.btn-success').trigger('click');
}
});
相关:请注意,您可以使用该方法而不是几个
parent
调用。是的,但是为什么keyup
事件不能正常工作?如果我对它们使用keypress
或keydown
和preventDefault()
,我看不到输入字段中输入的文本。尽管enter
点击被处理properly@Masha-因为太晚了。它在按键效果出现后运行。如果按A键,它将键入A;如果按Enter键,它将提交表单。如果阻止按A键,则不会键入A。如果阻止按Enter键,则不会提交表单。Keyup没有默认行为,因此没有什么可防止的。@Masha它按预期的方式工作。在提交表单之前,浏览器会等待并执行事件处理程序。delegate
不受欢迎。这更像是一个发现差异的游戏,而不是一个答案。
$(document).on('keyup', '#phrase_fld', function(e){
e.preventDefault();
e.stopPropagation();
console.log(e);
if(e.keyCode == 13){
$(this).parent().parent().parent().parent().parent().find('button.btn-success').trigger('click');
}
});
$('body').delegate('#phrase_fld', 'keypress', function(e) {
if(e.keyCode === 13) {
e.preventDefault();
console.log(e);
$(this).parent().parent().parent().parent().parent().find('button.btn-success').trigger('click');
}
});