关注from my previous question,so quickly answered Meder之后,这并不好笑,现在还有一个问题出现在提交可重复使用的jQuery表单的过程中不要让用户远离他们所在的地方。
问题
jQuery serialize()
函数在页面中的所有表单上执行其魔法,而不是提交的特定表单。下面的示例代码。
如何捕获表单的唯一名称/ ID,并将"form"
中的$("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,
...
答案 0 :(得分:4)
var dataString = $('#contact').serialize()
如果要将事件处理程序附加到按钮或表单的submit
事件,那么如果在this
事件处理函数范围内,则可以使用submit
引用它,例如
$('#contact').submit(function() {
alert( $(this).serialize() );
});
我强烈建议您阅读http://docs.jquery.com/Selectors
答案 1 :(得分:2)
通过使用“表单”字符串作为选择器,您实际上获得了页面中的所有FORM
元素,为了只选择一个表单,您可以:
通过id属性获取特定表单(使用id selector):
var dataString = $("#contact").serialize();
或者通过其名称属性(使用attributeEquals选择器):
var dataString = $("form[name=contact]").serialize();
答案 2 :(得分:0)
$("#contact").serialize()
不是使用serialize
而是使用一个很好的plugin,它允许您异步发布表单。您所要做的就是:
$(function() {)
$('#contact').ajaxForm();
});
另外,不要忘记为表单指定正确的操作,它不应该为空。