25

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

  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-%に、「-」の後に続くものをすべて受け入れてもらいたいのですが、ご理解いただければ幸いです。

4

3 に答える 3

36

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

$(".something");

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

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

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

$("form");

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

$("form").submit(function (e) {
    e.preventDefault();
    var formId = this.id;  // "this" is a reference to the submitted form
});
于 2013-02-19T23:35:30.523 に答える
10

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

$("form").submit(function() {
  var theForm = $(this);
  var formID = theForm.attr("id");
  // do something
});
于 2013-02-19T23:23:15.190 に答える
-1

このようなもの...

   $('#myForm').submit(function (e) {
     e.preventDefault;
     if (e.result == true) {
       alert("This form was submitted!")
     }
   });
于 2019-06-25T15:16:51.167 に答える