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"));
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
:
Jede Eingabe hat eine form
-Eigenschaft, die auf die Form verweist, zu der die Eingabe gehört.
function doSomething(element) {
var form = element.form;
}
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
Verwenden von jQuery :
function doSomething(element) {
var form = $(element).closest("form").get().
//do something with the form.
}
Ich musste element.attr ('form') anstelle von element.form verwenden
Ich benutze Firefox für Fedora 12
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.
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;
einfach als:
alert( $(this.form).attr('name') );
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