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

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

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

 abc/def.aspx?field1=val1&field2=val2&field3=val3&field4=val4&field5=val5&final=finalQuery 

删除提交时的元素。

在onsubmit处理程序上:

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

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

 $(formElement).submit(function() { this.field1.disabled = true; return true; //send }); 

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

 

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

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

我认为最好的解决方案是处理提交,然后自己发送请求:

 $(form).submit(function() { //do everything you need in here to get the final result var finalResult = alotoflogic(); $.get("abc/def.aspx",final=finalResult, "callbackfunction", "responseType"); return false; }); 

这应该完全符合你的要求。 编辑:正如亚历克斯所指出的,这个解决方案不会将您发送到该页面,如果您需要转到可以执行的新页面,只需获取结果:

 $(form).submit(function() { //do everything you need in here to get the final result var finalResult = alotoflogic(); window.location('abc/def.aspx?final='+finalResult); return false; }); 

这样浏览器就会重定向到该页面,只发送最终结果。