48

現在の要素が入っているフォームの送信イベントをトリガーしたいのですが、時々機能することがわかっている方法は次のとおりです。

this.form.submit();

メソッドがすべてのブラウザで機能することを100%確信しているわけではないため、おそらくjQueryを使用するより良い解決策があるかどうか疑問に思っています。

編集:

私が持っている状況は、次のとおりです。

<form method="get">
    <p><label>Field Label
        <select onchange="this.form.submit();">
            <option value="blah">Blah</option>
            ....
        </select></label>
    </p>
</form>

の変更時にフォームを送信できるようにしたい<select>

私が探しているのは、フォームの ID または名前を知らなくても、フォーム内の任意のフィールドで機能するソリューションです。$('form:first')フォームがページの 3 番目に$('form')なる可能性があるため、機能しません。また、私はすでにサイトで jQuery を使用しているため、jQuery を少し使用することは大したことではありません。

では、入力/選択/テキストエリアがあるフォームをjQueryに取得させる方法はありますか?

4

8 に答える 8

114

あなたが探しているのは次のようなものだと思います:

$(field).closest("form").submit();

たとえば、onchange イベントを処理するには、次のようにします。

$(select your fields here).change(function() {
    $(this).closest("form").submit();
});

何らかの理由で jQuery 1.3 以降を使用していない場合は、parents代わりにclosest.

于 2009-01-07T03:38:35.723 に答える
25
this.form.submit();

これはおそらくあなたの最善の策です。特に、プロジェクトでjQueryをまだ使用していない場合は、この目的のためだけにjQuery(または他のJSライブラリ)を追加する必要はありません。

于 2009-01-06T21:12:33.927 に答える
5

jQueryを使用するのが最善の解決策であることがわかりました

$(this.form).submit()

このステートメントを使用すると、jquery プラグイン ( jquery form pluginなど) が正しく機能し、jquery DOM 走査のオーバーヘッドが最小限に抑えられます。

于 2014-02-12T19:05:29.273 に答える
4

マシューの答えと同様に、次のことができることがわかりました。

$(this).closest('form').submit();

間違った例: 親機能を使用する際の問題は、フィールドが機能するためにフォーム内に直接配置する必要があることです (tds、ラベルなどの内部ではありません)。

私は訂正します: 親s (s 付き) も機能します。それを指摘してくれたThxs Paolo。

于 2009-04-04T06:33:32.523 に答える
3

form.submitはいつでもJQuery 化できますが、同じことを呼び出すだけかもしれません。

$("form").submit(); // probably able to affect multiple forms (good or bad)

// or you can address it by ID
$("#yourFormId").submit();

関数を送信イベントにアタッチすることもできますが、それは別の概念です。

于 2009-01-06T20:55:08.270 に答える
1

「現在の要素」が何を意味するのか説明していないという点で、あなたの質問はやや混乱しています。

すべての種類の入力要素と「送信」タイプのボタンを含むページに複数のフォームがある場合、そのフィールドのいずれかに入力するときに「Enter」を押すと、そのフォームの送信がトリガーされます。そこにはJavascriptは必要ありません。

ただし、フォームに複数の「送信」ボタンがあり、他の入力がない場合(たとえば、テーブルの「行の編集」および/または「行の削除」ボタン)、投稿した行がそれを行う方法である可能性があります。

別の方法(Javascriptは必要ありません)は、すべてのボタン(「送信」タイプ)に異なる値を与えることです。このような:

<form action="...">
    <input type="hidden" name="rowId" value="...">
    <button type="submit" name="myaction" value="edit">Edit</button>
    <button type="submit" name="myaction" value="delete">Delete</button>
</form>

ボタンをクリックすると、そのボタンを含むフォームのみが送信され、押したボタンの値のみが(他の入力値とともに)送信されます。

次に、サーバー上で変数「myaction」の値を読み取り、何をするかを決定します。

于 2009-01-06T21:15:29.883 に答える
0

JQueryでは、呼び出すことができます

$("form:first").trigger("submit")

それがはるかに優れているかどうかはわかりません。form.submit(); だと思います。かなり普遍的です。

于 2009-01-06T20:52:51.893 に答える
0
<form method="get">
   <p><label>Field Label
      <select onchange="this.form.submit();">
         <option value="blah">Blah</option>
            ....
     </select>
     </label>
   </p>
    **<!-- <input name="submit" type="submit" /> // name="submit_new_name" -->**
  </form>

<!-- 

   this.form.submit == this.form.elements['submit'];

-->
于 2009-06-17T10:50:35.580 に答える