3

Mederがすぐに答えたので面白くなかった私の前の質問に続いて、再利用可能なjQueryフォームを送信する過程でポップアップする追加の質問があり、ユーザーを元の場所から遠ざけることはありません。 。

問題

jQueryserialize()関数は、送信された特定のフォームではなく、ページ内のすべてのフォームでその魔法を実行しています。以下のサンプルコード。

"form"フォームの一意の名前/IDをキャプチャし、その中$("form").serialize()でターゲットフォームの名前に置き換えて、それだけがシリアル化されるようにするにはどうすればよいですか?

フォームコード

<form name="contact" id="contact" action="">
  <input name="_recipients" type="hidden" value="joe@fake.com" />
  <input name="_subject" type="hidden" value="Title" />
  ...
    <fieldset>
      <label for="name" id="name_label">Name</label>
      <input type="text" name="name" id="name" size="30" value="" class="text-input" />
      <label class="error" for="name" id="name_error">This field is required.</label><br />

      <label for="email" id="email_label">Return Email</label>
      <input type="text" name="email" id="email" size="30" value="" class="text-input" />
      <label class="error" for="email" id="email_error">This field is required.</label><br />

      <label for="phone" id="phone_label">Return Phone</label>
      <input type="text" name="phone" id="phone" size="30" value="" class="text-input" />
      <label class="error" for="phone" id="phone_error">This field is required.</label><br/>

        <br />
      <input type="submit" name="submit" class="button" id="submit_btn" value="Send your suggestion" />
    </fieldset>
  </form>

jQueryのシリアル化と投稿

    var dataString = $("form").serialize();
    //alert (dataString);return false;

    $.ajax({
      type: "POST",
      url: "/_global/assets/scripts/formmail/formmail.asp",
      data: dataString,
...
4

3 に答える 3

4
var dataString = $('#contact').serialize()

イベントハンドラーをボタンまたはフォームのイベントにアタッチしている場合は、イベントハンドラー関数スコープ内にある場合submitはそれを参照できます。thissubmit

$('#contact').submit(function() {
 alert( $(this).serialize() );
});

http://docs.jquery.com/Selectorsを読むことを強くお勧めします

于 2009-10-20T06:30:13.653 に答える
2

「フォーム」文字列をセレクターとして使用することにより、実際にFORMはページ内のすべての要素を取得します。1つのフォームのみを選択するために、次のことができます。

id属性で特定のフォームを取得します(idセレクターを使用)。

var dataString = $("#contact").serialize();

または、その名前属性(attributeEqualsセレクターを使用):

var dataString = $("form[name=contact]").serialize();
于 2009-10-20T06:31:20.827 に答える
0
$("#contact").serialize()

使用する代わりに、フォームを非同期で投稿できるserialize優れたプラグインがあります。あなたがしなければならないのは:

$(function() {)
    $('#contact').ajaxForm(); 
});

また、フォームに正しいアクションを割り当てることを忘れないでください。空にしないでください。

于 2009-10-20T06:30:49.750 に答える