1

jQuery を使用して、ページを更新せずにフォームを送信したいと考えています。次のようなオンラインの例をいくつか見つけました: http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

しかし問題は、フォーム フィールドがハードコードされていることです。

  <div id="contact_form">
  <form name="contact" action="">
    <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>

      <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>

      <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 />
      <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
    </fieldset>
  </form>
  </div>

そしてJavaScript:

  var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;
  //alert (dataString);return false;
  $.ajax({
    type: "POST",
    url: "bin/process.php",
    data: dataString,
    success: function() {
      $('#contact_form').html("<div id='message'></div>");
      $('#message').html("<h2>Contact Form Submitted!</h2>")
      .append("<p>We will be in touch soon.</p>")
      .hide()
      .fadeIn(1500, function() {
        $('#message').append("<img id='checkmark' src='images/check.png' />");
      });
    }
  });
  return false;

したがって、上記の例では、dataStringはハードコードされたフォーム フィールドから作成されます。私のフォームは動的なので、入力フィールドの名前がわかりません。

注:フォーム フィールドは動的ですが、フォーム名はハードコードされているため、1 つのオプションは子ノードを調べて値を解析することだと思います。しかし、もっと簡単な方法があるかどうか疑問に思っていました。

4

2 に答える 2

5

data: $("#contact_form form").serializeArray()するべきです。

于 2012-04-07T19:56:11.053 に答える
1

Caner さん、あなたのフォームは動的なので、これ以上簡単な方法はありません。次のようなコードを使用してフォームを通過する必要があります。

var message = "";
$("#formID input").each(function() {
    message += $(this).attr("name");
});

このようなコードは、フォーム内の各入力の名前を取得し、それを message という文字列に連結します。この場合、私よりも具体的にすることができますが、基本的な考え方を理解し、このコードを使用してニーズに合わせてください。

于 2012-04-07T20:01:11.463 に答える