我正在使用jQuery .serialize函数,无法让它在提交时序列化正确的表单。
我的js代码:
function getquerystring(form) {
return $("form").serialize();
}
我的表格:
<div class="leave_message_box">
<form name="leave_message_form">
<input type="text" name="clock_code" placeholder="Clock Code" />
<input type="text" name="message" placeholder="Message (Blank for none)"/>
<input type="hidden" name="type" value="leave_message" />
<input value="Leave Message" type="button" onclick='JavaScript:xmlhttpPost("clockin.php", "leave_message_form")'></p>
</form>
</div>
<div class="outside_job_box">
<form name="outside_job_form">
<input type="text" name="clock_code" placeholder="Clock Code" />
<input type="text" name="message" placeholder="Message (Blank for none)"/>
<input type="hidden" name="type" value="ouside_job" />
<input value="Outside Job" type="button" onclick='JavaScript:xmlhttpPost("clockin.php", "outside_job_form")'></p>
</form>
</div>
我必须在传递变量时做错事。完整代码@ pastie。我所拥有的功能确实有效,但它始终是最后提交的形式。
答案 0 :(得分:4)
使用此代码:
$("form")
会找到文档中的所有<form>
元素。
鉴于form
是一个包含表单的名称的字符串,您需要的是:
$("form[name='" + form + "']")
查看您提供的代码,我有这个建议。而不是将表单名称传递给您的函数,为什么不直接传递表单呢?
<button onclick="xmlhttpPost('blah', this.form)">
您也无需将javascript:
放入onclick
,onfocus
,onwhatever
属性中。
答案 1 :(得分:0)
我建议在表单上放置一个ID属性,然后使用该ID作为jQuery的显式选择器:
<div class="outside_job_box">
<form id="outside_job_form" name="outside_job_form">
<input type="text" name="clock_code" placeholder="Clock Code" />
<input type="text" name="message" placeholder="Message (Blank for none)"/>
<input type="hidden" name="type" value="ouside_job" />
<input value="Outside Job" type="button" onclick='JavaScript:xmlhttpPost("clockin.php", "outside_job_form")'></p>
</form>
</div>
然后你会像这样选择和序列化它;
var f = $("#outside_job_form").serialize();
在我看来,不仅让你的代码更有效,而且更具可读性。
答案 2 :(得分:0)
如果唯一目的是将简单文本编码为URL格式,请使用encodeURIComponent()。