请不要太快将此问题标记为重复。
我遇到过这个问题。我已将SUBMIT事件的事件监听器附加到我的表单中,如下所示:
$('#my-form')
.submit(function() {
return false
});
一切都很好,当我提交表格时,没有重新加载。
但是,我还将另一个事件监听器附加到表单的单个输入字段(在前面的代码片段上展开):
$('#my-form')
.submit(function() {
return false
})
.on('keydown', function(e){
var $form = this;
var $actionAttr = $form.action;
var $input = e.target;
$form.action = $actionAttr + $input.value;
$form.submit(); <-----
});
现在每当我开始向文本输入字段输入内容时,表单会立即提交并重新加载页面。
是否有任何方法可以使用jQuery(submit
在上面的示例中)触发$form.submit()
侦听器“尊重”提交事件。
答案 0 :(得分:0)
var $form=this;
是一个问题。在jquery事件处理程序内部,this
是本机DOM
元素,需要$(this)
来获取jquery元素。所以你的意思是触发jquery提交,但你实际上是在触发本机DOM提交事件,不会尊重事件处理程序。
只需包装你的,它应该工作。
答案 1 :(得分:-1)
试试这个
$('#my-form')
.submit(function(e) {
e.preventDefault();
})
.on('keydown', function(e){
var $form = $(this);
var $actionAttr = $form.action;
var $input = e.target;
$form.action = $actionAttr + $input.value;
$form.submit();
});