如何获得input的表单父项?

当我只有一个INPUT的引用时,我需要获得对INPUT的FORM父代的引用。 这是可能的JavaScript? 如果你喜欢使用jQuery。

function doSomething(element) { //element is input object //how to get reference to form? } 

这不起作用:

 var form = $(element).parents('form:first'); alert($(form).attr("name")); 

作为input的原生DOM元素也具有指向它们所属的表单的form属性:

 var form = element.form; alert($(form).attr('name')); 

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

如果这是一个不同types的元素(不是<input> ),你可以find最接近的父类:

 var $form = $(element).closest('form'); alert($form.attr('name')); 

另外,请参阅HTMLInputElementform属性上的这个MDN链接:

每个input都有一个form属性,它指向input所属的表单,简单地说:

 function doSomething(element) { var form = element.form; } 

我使用了一点jQuery和老式的javascript – less代码

 $($(this)[0].form) 

这是包含元素的表单的完整引用

使用jQuery :

 function doSomething(element) { var form = $(element).closest("form").get(). //do something with the form. } 

我需要使用element.attr('form')而不是element.form

我在Fedora 12上使用firefox

如果使用jQuery并具有任何表单元素的句柄,则需要在使用.form之前获取(0)元素

 var my_form = $('input[name=first_name]').get(0).form; 
 function doSomething(element) { var form = element.form; } 

并在html中,你需要find该元素,并添加attribut“窗体”连接到该窗体,请参阅http://www.w3schools.com/tags/att_input_form.asp但这种formsattr 不支持IE ,因为你需要直接传递表单id。

简单地说:

 alert( $(this.form).attr('name') ); 

还有一个….

 var _e = $(e.target); // e being the event triggered var element = _e.parent(); // the element the event was triggered on console.log("_E " + element.context); // [object HTMLInputElement] console.log("_E FORM " + element.context.form); // [object HTMLFormElement] console.log("_E FORM " + element.context.form.id); // form id 

这会工作吗? (留下行动空白也回到自己,对不对?)

 <form action=""> <select name="memberid" onchange="this.form.submit();"> <option value="1">member 1</option> <option value="2">member 2</option> </select> 

“this”将是select元素,.form将是其父窗体。 对?