回答:
入力であるネイティブDOM要素にもform
、それらが属するフォームを指す属性があります。
var form = element.form;
alert($(form).attr('name'));
w3schoolsによると.form
、入力フィールドのプロパティは、IE 4.0以降、Firefox 1.0以降、Opera 9.0以降でサポートされています。これは、jQueryが保証するより多くのブラウザーであるため、これに固執する必要があります。
これが別のタイプの要素(以外<input>
)である場合は、次のようにして最も近い親を見つけることができますclosest
。
var $form = $(element).closest('form');
alert($form.attr('name'));
また、次のform
プロパティのMDNリンクを参照してくださいHTMLInputElement
。
私は少しjQueryと古いスタイルのJavaScriptを使用しています-少ないコード
$($(this)[0].form)
これは、要素を含むフォームへの完全な参照です
$(this.form)
?
jQueryを使用していて、任意のフォーム要素へのハンドルがある場合、.formを使用する前に要素をget(0)する必要があります
var my_form = $('input[name=first_name]').get(0).form;
function doSomething(element) {
var form = element.form;
}
そしてhtmlで、あなたはその要素を見つけ、そのフォームに接続するために属性「フォーム」を追加する必要があります。http://www.w3schools.com/tags/att_input_form.aspを参照してください。 しかし、このフォームattr はIEをサポートします。つまり、フォームIDを直接渡す必要があります。
そしてもう一つ...
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;