2014-11-20 82 views
2

我想提交一个表单,一旦用户已经接受他们想通过jQuery UI对话框继续。jQuery提交'这个'表格

<form method="POST" action="url" onsubmit="return APP.dom.confirm(this);"> 
    <button type="submit" class="btn btn-sm btn-danger"><i class="fa fa-trash"></i></button> 
</form> 

APP.dom.confirm方法是这样的:

confirm: function(form) { 
    $("#dialog-confirm").dialog({ 
     modal: true, 
     buttons: { 
      "Confirm": function() { 
      $(form).submit(); 
      }, 
      "Cancel": function() { 
      $(this).dialog("close"); 
      } 
     } 
    }); 

    return false; 
} 

这个工作,但是当他们点击确认我想获得提交表单。

$(form).submit(); 

这是行不通的。记录它我得到上面的HTML回来。我试过的变化,都无济于事:

$(form).clostest('form').submit(); 

如何提交this

回答

5

变化

$(form).submit(); 

form.submit(); 

当你一个jQuery对象调用submit,它要求你再次提交处理程序。直接在DOM元素上调用它不会。

(有趣的是,堆栈片段不让我提交表单,即使没有与目标= “_空白”)

var nesting = 0; 
 
function submitHandler(form) { 
 
    var which = $(form).find("input[type=radio]:checked").val(); 
 
    ++nesting; 
 
    if (nesting > 5) { 
 
    snippet.log("Nested to 5, gave up"); 
 
    } else { 
 
    if (which === "jQuery") { 
 
     snippet.log("Calling via jQuery, nesting = " + nesting); 
 
     $(form).submit(); 
 
    } else { 
 
     snippet.log("Calling via DOM, nesting = " + nesting); 
 
     form.submit(); 
 
    } 
 
    } 
 
    --nesting; 
 
    return false; 
 
}
<form id="the-form" 
 
     onsubmit="return submitHandler(this);" 
 
     action="http://www.google.com/search" 
 
     target="_blank" 
 
     method="GET"> 
 
    <input type="text" name="q" value="kittens"> 
 
    <div> 
 
    <label> 
 
     <input type="radio" name="opts" value="jQuery"> Submit with jQuery 
 
    </label> 
 
    </div> 
 
    <div> 
 
    <label> 
 
     <input type="radio" name="opts" value="DOM"> Submit with DOM 
 
    </label> 
 
    </div> 
 
    <button>Submit</button> 
 
</form> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+1

Ahhh我明白了,我猜得太过分了。干杯:) – Alias 2014-11-20 19:17:24

+0

自己也这样做,很好的回答+1 – 2014-11-20 19:18:14

0
confirm: function() { 
var that = this; 
    $("#dialog-confirm").dialog({ 
     modal: true, 
     buttons: { 
      "Confirm": function() { 
      $(that).submit(); 
      }, 
      "Cancel": function() { 
      $(this).dialog("close"); 
      } 
     } 
    }); 
} 

通过更换onsubmit="return APP.dom.confirm(this);" $('form')。on('submit',APP.dom.confirm);