如何获得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'));
另外,请参阅HTMLInputElement
的form
属性上的这个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将是其父窗体。 对?