首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用jQuery的form.serialize但排除空字段

如何使用jQuery的form.serialize但排除空字段
EN

Stack Overflow用户
提问于 2009-03-03 23:50:07
回答 6查看 91.8K关注 0票数 111

我有一个带有大量文本输入的搜索表单&通过GET提交的下拉列表。我希望在执行搜索时,通过删除查询字符串中的空字段来获得更清晰的搜索url。

代码语言:javascript
复制
var form = $("form");  
var serializedFormStr = form.serialize();  
// I'd like to remove inputs where value is '' or '.' here
window.location.href = '/search?' + serializedFormStr

你知道我如何使用jQuery做到这一点吗?

EN

回答 6

Stack Overflow用户

发布于 2015-02-13 23:50:32

我不能让汤姆的解决方案工作(?),但我可以使用.filter()和一个短函数来识别空字段。我使用的是jQuery 2.1.1。

代码语言:javascript
复制
var formData = $("#formid :input")
    .filter(function(index, element) {
        return $(element).val() != '';
    })
    .serialize();
票数 62
EN

Stack Overflow用户

发布于 2009-03-04 07:55:37

你可以用一个正则表达式...

代码语言:javascript
复制
var orig = $('#myForm').serialize();
var withoutEmpties = orig.replace(/[^&]+=\.?(?:&|$)/g, '')

测试用例:

代码语言:javascript
复制
orig = "a=&b=.&c=&d=.&e=";
new => ""

orig = "a=&b=bbb&c=.&d=ddd&e=";
new => "b=bbb&d=ddd&"  // dunno if that trailing & is a problem or not
票数 11
EN

Stack Overflow用户

发布于 2015-05-12 20:39:58

这对我来说很有效:

代码语言:javascript
复制
data = $( "#my_form input").filter(function () {
        return !!this.value;
    }).serialize();
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/608730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档