使用.serialize(),我只想要一个数组而不是名称值对。jQuery序列化没有名字?
例如,返回此:
单&多& Multiple3 & CHECK2 &收音机1
代替:
单=单&多个=多&多个= Multiple3 &检查= CHECK2 &无线电=收音机1
使用.serialize(),我只想要一个数组而不是名称值对。jQuery序列化没有名字?
例如,返回此:
单&多& Multiple3 & CHECK2 &收音机1
代替:
单=单&多个=多&多个= Multiple3 &检查= CHECK2 &无线电=收音机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);
@micha,感谢您的更新^ _^ – Neal 2012-03-16 16:23:13
我正在尝试使用序列化来做到这一点,因为这会给我只有用户定义的表单值(检查无线电,选定的选择等)。您编写的功能包括表单上的每个输入。 – gravyfries 2012-03-16 17:25:46
@ user618508您可以更改插件中的选择器.. – Neal 2012-03-16 18:02:39
这是一种破坏序列化的目的,但你可以建立你自己的:
var serializeValues = function(obj) {
var result = [];
for(x in obj) result.push(obj[x]);
return result.join('&');
}
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
我的正则表达式/.*=/可能很贪婪,并占用很多。对不起,没有机会去测试它。 – Chris 2012-03-16 16:17:28
@micha你能解释一下你添加的正则表达式吗? – Chris 2012-03-16 16:27:00
嗯,这给我的名单,但没有价值清单。 – gravyfries 2012-03-16 17:16:53
你可以使用.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);
});
我正在尝试使用序列化来做到这一点,因为这会给我只有用户定义的表单值(选中的收音机,选定的选择等)。您编写的功能包括表单上的每个输入。 – gravyfries 2012-03-16 17:25:31
我很好奇,为什么你要吗? – HerrSerker 2012-03-16 16:31:54
在下面提到了这一点,但我想要做的是从表单上的用户选择的项目构建一个字符串,以便我可以将它写入像这样的url: value1/value2/value3/value4 – gravyfries 2012-03-16 17:27:29
这很危险,因为你必须确定确切的顺序。而且这个应该不存在的单一价值。你最好展示你想要的表格和网址 – HerrSerker 2012-03-16 17:55:50