当用户进行表单提交时,有一种方法只能发送非空输入((那些值不等于""))?
我想实现这个因为我的网站提供了过滤数据的表单,并使用GET方法在网址中指明查询字符串,但显然是这样的
site.mx/voucher/search/?id=1,2,3,4&date_from=&date_until&comment=&status=6
以这种方式会更加漂亮
site.mx/voucher/search/?id=1,2,3,4&status=6
ty;)
答案 0 :(得分:2)
基于你所说的,你可以用jQuery做这样的事情:
jQuery(function() {
jQuery(form).on('submit',function(e) {
e.preventDefault();
var urlSuffix = '';
jQuery(this).find(input).each(function() {
if(jQuery(this).val() !== '' && jQuery(this).val() !== null) {
if(urlSuffix == '') {
urlSuffix += '?';
} else {
urlSuffix += '&';
}
urlSuffix += jQuery(this).attr('name') + '=' + jQuery(this).val();
}
});
window.location = 'site.mx/voucher/search/' + urlSiffix;
});
});
此功能首先禁用您的表单"默认"提交操作,然后将所有表单的字段添加到URL并重定向。
然而,最简单的方法是简单地将表单的操作指向: site.mx/voucher/search/ 并将方法更改为" GET"
答案 1 :(得分:1)
您可以使用CSS选择器仅选择非空字段来执行此操作:
$("form#search :input[value!='']").serialize()
由于我的声誉仍低于50,我无法发表评论,但您能告诉我们您如何提交表单吗?
答案 2 :(得分:0)
如果您的表单操作是'GET'并且您使用浏览器的本机表单post / get操作来执行此操作,则无法重写您的浏览器行为(好吧,也许您可以,但是您无法控制每个一个人的浏览器)。
如果你想使用ajax并通过js / ajax手动调用提交表单,你可以重写你的URL查询字符串并发布更干净的版本。否则......