如何序列化非空值并避免空格(+符号)?

时间:2013-07-02 16:28:12

标签: javascript jquery

我在表单中有几个输入,但我想要实现的只是发送至少有一个字符(字母数字)的那些,但是对于那些有空或空白值的人不能发送。 问题是,当用户通过按空格键错误地发送空白时,它会序列化一个加号(+)。

到目前为止,这是我发送序列化非空值的方法。

//this will print a query string with the values, but for whitespaces it sends '+' signs.
$('#myform').find('input').not('[value=""]').serialize(); 

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

var obj = {};
$('#myform').find('input').each(function() {

    var value = $(this).val().trim();
    var inputName = $(this).attr('name');

    if(value.length != 0) {
        obj[inputName] = value;
    }
});

$(obj).serialize();

答案 1 :(得分:2)

您可以使用$.trim

$('#myform').find('input').filter(function() {
     return $.trim(this.value) != "";
}).serialize();

这也将取实际用户输入(.value属性)而非.defaultValuevalue属性),如.not('[value=""]')

答案 2 :(得分:1)

通过谷歌搜索这似乎工作得很好:

$('#myform').find('input:filled').serialize(),

参考: http://jqueryvalidation.org/filled-selector/