如何防止表单元素发送一些我们不想要的字段?

Sad*_*egh 9 javascript forms jquery

我有一个表单元素,其中包含大约5个字段,最终查询将通过处理这些字段来创建.所以我想只向服务器发送最终查询,而不是所有这些查询.如何排除提交这些字段(使用jQuery)?

<form action="abc/def.aspx" method="get">
    <input type="text" name="field1" />
    <input type="text" name="field2" />
    <input type="text" name="field3" />
    <input type="text" name="field4" />
    <input type="text" name="field5" />
    <input type="hidden" name="final" />
    <input type="submit" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)

表单提交的输出如下所示:

abc/def.aspx?field1=val1&field2=val2&field3=val3&field4=val4&field5=val5&final=finalQuery
Run Code Online (Sandbox Code Playgroud)

lma*_*ers 19

删除不希望提交给服务器的字段上的name属性.

<form action="abc/def.aspx" method="get">
    <input type="text" />
    <input type="text" />
    <input type="text" />
    <input type="text" />
    <input type="text" />
    <input type="hidden" name="final" />
    <input type="submit" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)

这是实现您想要的最简单的方法,它适用于所有主流浏览器.

W3规范谈到仅在存在名称时提交表单值:http://www.w3.org/TR/html401/interact/forms.html#h-17.2


tco*_*ooc 10

删除提交时的元素.

在onsubmit处理程序上:

$(formElement).submit(function() {
    $(this.field1).remove(); //removing field 1 from query
    return true; //send
});
Run Code Online (Sandbox Code Playgroud)

禁用表单元素也会阻止它输入查询.(在Chrome上测试)

$(formElement).submit(function() {
    this.field1.disabled = true;
    return true; //send
});
Run Code Online (Sandbox Code Playgroud)