2013-07-24 79 views
0

我正在开发一个搜索表单。表单Get方法:防止在查询字符串中提交空字段

搜索表单有2个部分, 首次简单搜索,带有一些选择,输入和提交按钮。 第二个包含许多选择,复选框,收音机,输入和提交按钮。

我正在使用GET方法,因为我想要查询字符串中的所有字段。 example.com/cars-parts/cars-for-sale/?country=205 &城市= 19 & cars_category = 462

但问题是,如果用户不选择某些字段(因为他DONOT想申请这个标准)很多空字段,并使查询字符串太长。

问题:

我想删除之前的所有空字段表单提交(禁用或任何需要),使查询字符串包括具有价值仅领域。

注意:只建议使用Form Get方法。在过去我使用POST方法并没有值传递查询字符串,但现在我想查询字符串中的值。

谢谢您的阅读。

+1

嗨雅阿萨德 - 这实际上是一个现有的问题的副本,但如果它仍然对你有任何用处,我只是发布了一个不同的选项在原始[在这里](http://stackoverflow.com/questions/5926673/how-can-i-remove-empty-fields-from-my-form-in-the-querystring/30009333#30009333)。 简短版本是(在Apache上)使用mod-rewrite规则可能是一个更好的解决方案,如果你想确保当用户不使用Javascript时能正确删除这些字段。 – Hobbes

+0

是的,它有帮助,感谢您的回答 –

回答

1

您可以绑定表单提交事件上的函数,并使用空值删除/禁用所有输入。就像这样:

your_form.submit(function() { 
    your_form.find('input').each(function() { 
     var input = $(this); 
     if (!input.val()) { 
      input.remove(); // or input.prop('disabled', true); 
     } 
    }); 
}); 
+0

是的,你是对的,但它只会删除输入,因为我说问题可以有选择,复选框,收音机等。 –

+0

目前写一个,$('#frm_search')。submit (function)(){(this).find(':input [value =“”]')。prop('disabled',true); $(this).find('select')。not(“ :选择了“)丙( '禁用',TRUE); \t \t \t 返回\t真; \t \t});。 –

0

我认为你必须包括到.get()方法之前,验证所有这些领域,并且不包括在.get()方法没有值的输入。

1

请尝试使用您的$(function(){ ... })部分如下:

$('form').submit(function(){$('input[value=]',this).remove();return true;}) 

这将删除您形式的任何空input元素提交之前。你当然可以修改它,以包括非选择的选择框等

+0

这不会删除_empty_'input'元素,但会删除_do没有'value =“...”'set_的输入元素。 –

+0

奎因是绝对正确的 - 有一段时间没有在这里... 但是,这*将*工作: '$('form')。提交(function(){('input')。each(function(){with($(this))if(val()=='')remove();}) })' – cars10m

+0

Oooops,当然,上述评论本质上是Magus的答案 - 抱歉重复! – cars10m

相关问题