我有一些JavaScript获取表单的变化,然后调用表单的常规提交功能。该表单是一个GET表单(用于搜索),并且我在params中有很多空的属性。我想要做的是在提交前删除任何空属性,以获得更清洁的URL:例如,如果有人改变了“主题”选择“英语”我想他们的搜索网址是提交之前从表单的参数中删除空值
http://localhost:3000/quizzes?subject=English
而不是
http://localhost:3000/quizzes?term=&subject=English&topic=&age_group_id=&difficulty_id=&made_by=&order=&style=
就像现在这样。这纯粹是为了让一个更干净和更有意义的URL链接到人们的书签等目的。所以,我需要的是沿着这些线的东西,但这是不正确的,因为我没有编辑实际的形式但是从形式的PARAMS做出了JS对象:
quizSearchForm = jQuery("#searchForm");
formParams = quizSearchForm.serializeArray();
//remove any empty fields from the form params before submitting, for a cleaner url
//this won't work as we're not changing the form, just an object made from it.
for (i in formParams) {
if (formParams[i] === null || formParams[i] === "") {
delete formParams[i];
}
}
//submit the form
我想我接近这一点,但我缺少的是如何编辑实际窗体的属性,而不是使另一个对象和编辑的步骤。
感谢您的任何意见 - 最大
编辑 - 解决 - 感谢很多人谁张贴这一点。这是我的,这似乎完美。
function submitSearchForm(){
quizSearchForm = jQuery("#searchForm");
//disable empty fields so they don't clutter up the url
quizSearchForm.find(':input[value=""]').attr('disabled', true);
quizSearchForm.submit();
}
可我只是说,这是一项很棒的用户这样的想法。 – 2010-03-10 15:14:08
好问题和很好的答案:我有一个大的搜索表单,大部分时间只有一个领域得到填补。现在这些网址要短得多。 – guettli 2012-10-29 10:19:28