Javascript 如何获取输入的包含形式?
当我只有对输入的引用时,我需要获取对输入的表单父级的引用。这在JavaScript中是可能的吗?如果愿意,可以使用jQueryJavascript 如何获取输入的包含形式?,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")); 作为
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;