如何获取输入的包含形式?

时间:2009-06-13 19:48:17

标签: javascript jquery forms 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"));

11 个答案:

答案 0 :(得分:166)

作为输入的原生DOM元素也有一个form属性,指向它们所属的形式:

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

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

如果这是一种不同类型的元素(不是<input>),您可以找到距离最近的父closest

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

另请参阅form的{​​{1}}媒体资源上的此MDN链接:

答案 1 :(得分:36)

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

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

答案 2 :(得分:4)

我使用了一些jQuery和旧式javascript - 少了代码

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

这是对包含元素

的表单的完整引用

答案 3 :(得分:3)

使用jQuery

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

答案 4 :(得分:2)

我需要使用element.attr('form')代替element.form

我在Fedora 12上使用Firefox。

答案 5 :(得分:2)

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

var my_form = $('input[name=first_name]').get(0).form;

答案 6 :(得分:2)

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

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

答案 7 :(得分:0)

简单地说:

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

答案 8 :(得分:0)

还有一个......

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

答案 9 :(得分:0)

事件侦听器调用此Javascript函数示例以标识表单

function submitUpdate(event) {
    trigger_field = document.getElementById(event.target.id);
    trigger_form = trigger_field.form;

答案 10 :(得分:-2)

这会有用吗? (留下动作空白也会将表格提交给自己,对吗?)

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

&#34;这&#34;将是select元素,.form将是其父元素。正确?