我想使用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
是从硬编码的表单字段创建的。我的表单是动态的,所以我不知道它的输入字段的名称。
注意:虽然表单字段是动态的,但表单名称是硬编码的,所以我猜一个选项是遍历子节点并解析值。但我想知道是否有更简单的方法。
答案 0 :(得分:5)
data: $("#contact_form form").serializeArray()
应该这样做。
答案 1 :(得分:1)
Caner,我担心因为你的形式是动态的,所以没有更简单的方法。您需要使用以下代码浏览表单:
var message = "";
$("#formID input").each(function() {
message += $(this).attr("name");
});
这样的代码将获取表单中每个输入的名称,并将其连接到名为message的字符串。你可以比我在这种情况下更具体,但你应该得到基本的想法并使用这些代码来满足你的需求。