it-swarm.com.de

Wie bekomme ich das übergeordnete Formular einer Eingabe?

Ich muss einen Verweis auf das FORM-Elternteil eines INPUT erhalten, wenn ich nur einen Verweis auf diesen INPUT habe. Ist das mit JavaScript möglich? Verwenden Sie jQuery, wenn Sie möchten.

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

Das funktioniert nicht:

var form = $(element).parents('form:first');

alert($(form).attr("name"));
90
Ropstah

Eingebaute DOM-Elemente, die Eingaben sind, weisen auch ein form-Attribut auf, das auf die Form verweist, zu der sie gehören:

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

Gemäß w3schools wird die .form-Eigenschaft von Eingabefeldern von IE 4.0+, Firefox 1.0+, Opera 9.0+ unterstützt. Dies ist noch mehr Browser, die von jQuery garantiert werden.

Wenn dies ein anderer Elementtyp wäre (kein <input>), könnten Sie mit closest das nächstgelegene übergeordnete Element finden:

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

Siehe auch diesen MDN-Link in der form-Eigenschaft von HTMLInputElement:

160

Jede Eingabe hat eine form -Eigenschaft, die auf die Form verweist, zu der die Eingabe gehört.

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

Ich benutze ein bisschen jQuery und altmodisches Javascript - weniger Code

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

Dies ist ein vollständiger Verweis auf das Formular, das das Element enthält

5
Nigel Francois

Verwenden von jQuery :

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

Ich musste element.attr ('form') anstelle von element.form verwenden

Ich benutze Firefox für Fedora 12

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

in der HTML-Datei müssen Sie dieses Element finden und das Attribut "form" hinzufügen, um eine Verbindung zu diesem Formular herzustellen. Weitere Informationen finden Sie unter http://www.w3schools.com/tags/att_input_form.asp . Dieses Formular attr unterstützt jedoch IE nicht, da Sie die Formular-ID direkt übergeben müssen.

2
阳光Emi

Wenn Sie jQuery verwenden und ein beliebiges Formularelement verwenden, müssen Sie das Element vor dem Verwenden von .form (0) abrufen

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

einfach als:

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

Und einer mehr....

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
0
Jadeye