web-dev-qa-db-ja.com

フォームが送信されたかどうかをjQueryで確認する方法は?

たくさんのフォームがあるページがあり、ユーザーはそのページで何かを選択します。ユーザーがそうするとき、私はその要素をどこか別の場所に置く必要があります。これは本当にショッピングカートのようです。しかし、意図したとおりに実際に機能するページの最初のフォーム以上のものを取得することはできません。私は複数のことを試しました:

  1. すべてのフォームに同じIDを指定します。これにより、最初のフォームが意図したとおりに動作し、そのフォームのデータが提供されます。
  2. それらにすべて同じIDを再度与えます。今回は一意の識別子をIDに追加しますが、もちろん、jQuery $('#something')は一致しないのでキャッチしません。

だから私はこれをどうするか考えています。ページで送信されたフォームからのみデータを受信する必要があります。そして、前述のように、私が今持っているように、それらのすべてに何らかの種類のプレフィックスを付けることができますが、それをどのように一致させるかわかりません。

ヘルプは大いに感謝されるでしょう!

要求されたいくつかのコード(もちろん、私が意味することを示すための例にすぎません):

HTML:

<form id="something-0"><input type="hidden" value="0"><input type="submit"></form>
<form id="something-1"><input type="hidden" value="1"><input type="submit"></form>

JQuery:

$("#something-%").submit(function(e) {
e.preventDefault();
$("#some-span").html(data);
});

#something-%に「-」の後に続くものをすべて受け入れてほしいと思っています。ご理解いただければ幸いです。

23
Lozzano

一般的な答えとして、要素のグループを分類するには、class属性を使用して、各要素に同じクラス名を付けます。その後、そのクラスで要素を選択できます。 1つの要素に複数のクラスを含めることができます。

_$(".something");
_

Idを使用する必要がある場合は、属性セレクターを使用できます。

_$("[id^='something']");  // all elements with an id beginning with 'something'
$("[id$='something']");  // all elements with an id ending with 'something'
_

この特定の質問では、ページ内の任意のフォームを操作するため、最も簡単な選択は要素名セレクターを使用することです。

_$("form");
_

セレクターに関係なく、submit()ハンドラー内でthisを参照することにより、送信されたフォームを識別できます。

_$("form").submit(function (e) {
    e.preventDefault();
    var formId = this.id;  // "this" is a reference to the submitted form
});
_
31
gilly3

セレクター 'form'を使用して、すべてのフォームをキャッチできます。

$("form").submit(function() {
  var theForm = $(this);
  var formID = theForm.attr("id");
  // do something
});
10
devrooms

このようなもの...

   $('#myForm').submit(function (e) {
     e.preventDefault;
     if (e.result == true) {
       alert("This form was submitted!")
     }
   });
0
Nilson Martins