如何获取输入的表单父级?

Rop*_*tah 100 javascript forms jquery input

当我只有对该INPUT的引用时,我需要获得对INPUT的FORM父级的引用.这可以用JavaScript吗?如果你愿意,可以使用jQuery.

function doSomething(element) {
    //element is input object
    //how to get reference to form?
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

var form = $(element).parents('form:first');

alert($(form).attr("name"));
Run Code Online (Sandbox Code Playgroud)

Pao*_*ino 177

作为输入的本机DOM元素还具有form指向它们所属表单的属性:

var form = element.form;
alert($(form).attr('name'));
Run Code Online (Sandbox Code Playgroud)

根据w3schools,.form输入字段的属性由IE 4.0 +,Firefox 1.0 +,Opera 9.0+支持,这是jQuery保证的更多浏览器,所以你应该坚持这一点.

如果这是一个不同类型的元素(不是一个<input>),你可以找到最近的父元素closest:

var $form = $(element).closest('form');
alert($form.attr('name'));
Run Code Online (Sandbox Code Playgroud)

另外,请参阅以下form属性的此MDN链接HTMLInputElement:

  • 使用element.form - 它可以在比jQuery更多的浏览器上运行.它也是一个属性引用,因此比使用nearest()走DOM树效率高出一千倍. (5认同)

Gar*_*eth 38

每个输入都有一个form属性,指向输入所属的形式,所以简单地说:

function doSomething(element) {
  var form = element.form;
}
Run Code Online (Sandbox Code Playgroud)