Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取输入的包含形式?_Javascript_Jquery_Forms_Input - Fatal编程技术网

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

Javascript 如何获取输入的包含形式?,javascript,jquery,forms,input,Javascript,Jquery,Forms,Input,当我只有对输入的引用时,我需要获取对输入的表单父级的引用。这在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")); 作为

当我只有对输入的引用时,我需要获取对输入的表单父级的引用。这在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"));

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

var form = element.form;
alert($(form).attr('name'));
据介绍,IE 4.0+、Firefox 1.0+、Opera 9.0+支持输入字段的
.form
属性,这是jQuery保证的更多浏览器,因此您应该坚持这一点

如果这是不同类型的元素(而不是
),则可以找到最接近的父元素:

另外,请参见
HTMLInputElement
表单
属性上的此MDN链接:

使用:


每个输入都有一个
form
属性,该属性指向输入所属的表单,因此:

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

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


我在Fedora12上使用Firefox。

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

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

我使用了一些jQuery和老式的javascript代码

$($(this)[0].form) 
这是对包含元素的表单的完整引用

function doSomething(element) {
  var form = element.form;
}
在html中,您需要找到该元素,并添加属性“form”以连接到该表单,请参阅 但是这个表单attr不支持IE,对于IE,您需要直接传递表单id。

这样行吗?(将操作留空也会将表单提交给自己,对吗?)


成员1
成员2
“this”将是select元素,.form将是其父窗体。对吗?

简单地说:

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

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

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

好吧,这很有效。。关于表单属性。我刚试过,也很管用。但是你说的浏览器不支持这种功能?我很肯定是的。我只是不是100%确定,所以我不想承诺任何事情。我现在正在研究它…使用element.form-它将在比jQuery更多的浏览器上工作。它也是一个属性引用,因此它的效率大约是使用Nestest()在DOM树上遍历的1000倍。我同意。正如我所说,我只是不确定form属性是否在所有常见浏览器中都得到了广泛的实现。我已经编辑了我的答案,以便更明确地将其列为更好的选项,而如果这是一种不同类型的元素,则将其作为一个小新闻。它似乎也适用于其他输入类型,如select。很高兴知道。你基本上是在说“让它成为jQuery对象,然后再让它不是jQuery对象”。天啊,为什么不干脆做
$(this.form)
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
function submitUpdate(event) {
    trigger_field = document.getElementById(event.target.id);
    trigger_form = trigger_field.form;