如何使用jQuery完成表单提交时发送非空输入?

时间:2014-03-22 00:29:48

标签: javascript jquery forms

当用户进行表单提交时,有一种方法只能发送非空输入((那些值不等于""))?

我想实现这个因为我的网站提供了过滤数据的表单,并使用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;)

3 个答案:

答案 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查询字符串并发布更干净的版本。否则......