如何在jQuery中找到特定表单中的提交按钮

lei*_*ifg 46 javascript jquery

我尝试以特定形式获取提交按钮的jQuery对象(同一页面上有多个表单).

我设法获得了表单元素.它看起来像这样:

var curForm = curElement.parents("form");
Run Code Online (Sandbox Code Playgroud)

当前Element具有上下文HTMLInputElement.我尝试获取表单的相应提交元素的几种技术:

var curSubmit = curForm.find("input[type='submit']");
var curSubmit = $(curForm).find("input[type='submit']");    
var curSubmit = curForm.find(":submit");
var curSubmit = $(curForm).find(":submit");    
var curSubmit = $(curSubmit, "input[type='submit']");
Run Code Online (Sandbox Code Playgroud)

结果总是一样的(非常奇怪).我得到的结果与"curElement"相同.

那么如何才能获得正确的提交按钮?

SLa*_*aks 76

以下应该有效:

var submit = curElement.closest('form').find(':submit');
Run Code Online (Sandbox Code Playgroud)

  • +1代表:提交!比属性选择器更容易使用它们. (7认同)

jig*_*fox 17

这应该工作:

var curSubmit = $("input[type=submit]",curForm);
Run Code Online (Sandbox Code Playgroud)

编辑:注意'选择器中的缺失


Jak*_*kul 8

使用普通的javascript(不依赖于jquery):

var curSubmit = curForm.querySelector('button[type="submit"]');
Run Code Online (Sandbox Code Playgroud)

  • 如果有一个带有另一个提交按钮的内部表单怎么办? (2认同)

Ser*_*kov 5

由于 HTML5 提交按钮可能超出表单标签http://www.w3.org/TR/html-markup/input.submit.html#input.submit.attrs.form,您可以使用以下代码来查找它:

$(curElement.closest('form').get(0).elements).filter(':submit')
Run Code Online (Sandbox Code Playgroud)

  • 我不知道你为什么被否决,这就是我一直在寻找的答案。谢谢你! (2认同)

Ahm*_*awy 5

这对我有用:

var curSubmit = $("input[type=submit]",this);
Run Code Online (Sandbox Code Playgroud)

其中,意味着目前的形式提交

对于前。获取提交按钮的名称和所有提交的输入

$( "form" ).on( "submit", function( event ) {
    event.preventDefault();
    var data = $(this).serialize(); //all input variables  
    console.log(data); //print data in console
    var submit = $("input[type=submit]",this).attr('name'); 
    alert(submit); // name of submit button
});
Run Code Online (Sandbox Code Playgroud)