形式键+值对jQuery插件 [英] form key+value pairs jquery plugin

查看:77
本文介绍了形式键+值对jQuery插件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有一种方法可以访问浏览器在表单提交时编译的数据数组 - 在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆