使用$ .submit()触发表单提交并同时阻止页面重新加载

时间:2015-12-28 22:28:14

标签: jquery forms

请不要太快将此问题标记为重复。

我遇到过这个问题。我已将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()侦听器“尊重”提交事件。

2 个答案:

答案 0 :(得分:0)

var $form=this;

是一个问题。在jquery事件处理程序内部,this是本机DOM元素,需要$(this)来获取jquery元素。所以你的意思是触发jquery提交,但你实际上是在触发本机DOM提交事件,不会尊重事件处理程序。 只需包装你的,它应该工作。

Jquery submit vs. javascript submit

答案 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();     
 });