jQuery序列化函数有多种形式

时间:2009-11-10 13:47:10

标签: javascript jquery forms

我正在使用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。我所拥有的功能确实有效,但它始终是最后提交的形式。

3 个答案:

答案 0 :(得分:4)

使用此代码:

$("form")

会找到文档中的所有<form>元素。

鉴于form是一个包含表单的名称的字符串,您需要的是:

$("form[name='" + form + "']")

查看您提供的代码,我有这个建议。而不是将表单名称传递给您的函数,为什么不直接传递表单呢?

<button onclick="xmlhttpPost('blah', this.form)">

您也无需将javascript:放入onclickonfocusonwhatever属性中。

答案 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()