2012-03-16 18 views
1

使用.serialize(),我只想要一个数组而不是名称值对。jQuery序列化没有名字?

例如,返回此:

单&多& Multiple3 & CHECK2 &收音机1

代替:

单=单&多个=多&多个= Multiple3 &检查= CHECK2 &无线电=收音机1

+1

我很好奇,为什么你要吗? – HerrSerker 2012-03-16 16:31:54

+0

在下面提到了这一点,但我想要做的是从表单上的用户选择的项目构建一个字符串,以便我可以将它写入像这样的url: value1/value2/value3/value4 – gravyfries 2012-03-16 17:27:29

+1

这很危险,因为你必须确定确切的顺序。而且这个应该不存在的单一价值。你最好展示你想要的表格和网址 – HerrSerker 2012-03-16 17:55:50

回答

1

你可以让自己的插件来做到这一点:

jQuery.fn.mySerialize = function() { 

    var returning = ''; 

    $('input, select, textarea', this).each(function() { 
     if (this.value !== "") // check this to avoid && in returning string 
      returning += '&' + this.value; 
    }); 

    return returning.substring(1); 

}; 

而且你可以使用它像这样:

var serialize = $("form#fID").mySerialize(); 
alert(serialize); 

演示:http://jsfiddle.net/maniator/n2tca/

+0

@micha,感谢您的更新^ _^ – Neal 2012-03-16 16:23:13

+0

我正在尝试使用序列化来做到这一点,因为这会给我只有用户定义的表单值(检查无线电,选定的选择等)。您编写的功能包括表单上的每个输入。 – gravyfries 2012-03-16 17:25:46

+0

@ user618508您可以更改插件中的选择器.. – Neal 2012-03-16 18:02:39

1

这是一种破坏序列化的目的,但你可以建立你自己的:

var serializeValues = function(obj) { 
    var result = []; 
    for(x in obj) result.push(obj[x]); 
    return result.join('&'); 
} 
1
var value = $("form").serialize(); 
var newValue = value.replace(/&[^=]+/g, "").replace(/=/g, "/"); 

与string.replace: http://www.w3schools.com/jsref/jsref_replace.asp

JS正则表达式: http://www.w3schools.com/jsref/jsref_obj_regexp.asp

+0

我的正则表达式/.*=/可能很贪婪,并占用很多。对不起,没有机会去测试它。 – Chris 2012-03-16 16:17:28

+0

@micha你能解释一下你添加的正则表达式吗? – Chris 2012-03-16 16:27:00

+0

嗯,这给我的名单,但没有价值清单。 – gravyfries 2012-03-16 17:16:53

1

你可以使用.map改造适当input S(在这个例子中,所有input S,select小号,textarea s不是按钮)转换为它们的值的数组,然后使用join

$("#my_form").submit(function (e) { 
    var serialized = 
     $(":input:not(:button, :submit)", this).map(function(i, el) { 
      return el.value; 
     }).get().join("&"); 

    alert(serialized); 
}); 

例子:http://jsfiddle.net/andrewwhitaker/zQ4P2/1/

+0

我正在尝试使用序列化来做到这一点,因为这会给我只有用户定义的表单值(选中的收音机,选定的选择等)。您编写的功能包括表单上的每个输入。 – gravyfries 2012-03-16 17:25:31