形式键+值对jQuery插件 [英] form key+value pairs jquery plugin
问题描述
有没有一种方法可以访问浏览器在表单提交时编译的数据数组 - 在js / jq中的实际GET / POST操作之前?
$(form)。submit(function(event){
event.preventDefault();
//给我这里的数据数组
});
我发现自己越来越多地使用AJAX--我调用event.preventDefault(),获取名称/包含在 $(this)
(表单)中的所有元素的值对,然后通过 $。post() code>。手动组装数据阵列已成为一件痛苦的事情。如果一个插件存在的话,它会很棒:
$ data = $(form)。gimmeData();
是否存在支持所有主要HTML输入元素的东西?我接近这种方式错了吗?谢谢!
是的,jQuery有一个serializeArray()方法,可以满足您的要求。
它返回一个数组,如:
[{name:something, value:whatever},{name:another_one,value:22}]
把它变成一个像这样的对象:
$ $ p $ $ $ $('#form_id')。serializeArray(),obj = { };
for(var i = 0; i< arr.length; ++ i)
obj [arr [i] .name] = arr [i] .value;
如果一个名称在一个表单中出现多次,那么它的value将是一个数组来自单独字段的值。
Is there a way I can access the array of data that the browser compiles on a form submit - before the actual GET/POST operation in js/jq?
$("form").submit(function(event){
event.preventDefault();
//give me the data array here
});
I'm finding myself increasingly using AJAX - I call event.preventDefault(), grab the name/value pairs of all the elements contained in $(this)
(the form) and then push them to the server via $.post()
. It's becoming a pain the neck to assemble the data array manually. It would be great if a plugin existed of sorts:
$data = $("form").gimmeData();
Does something like this exist that supports all the major HTML input elements? Am I approaching this way wrong? Thanks!
Yes, jQuery has a "serializeArray()" method that does pretty much what you ask for.
It returns an array like:
[ { name: "something", value: "whatever" }, { name: "another_one", value: 22 } ]
You can turn that into an object like this:
var arr = $('#form_id').serializeArray(), obj = {};
for (var i = 0; i < arr.length; ++i)
obj[arr[i].name] = arr[i].value;
If a name appears more than once in a form, then its "value" will be an array of values from the separate fields.
这篇关于形式键+值对jQuery插件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!