Jquery获取所有输入值并创建一个数组(带有名称)

时间:2009-11-24 12:55:38

标签: php javascript jquery forms

干草伙计们,我正在做一些工作,我有很多表格。似乎这些不是传统方式“发布”(即使用提交按钮)。我需要一种方法来在单击链接时收集所有表单数据的所有名称和值(document.location然后用于重定向)。

我希望名称保持不变,以便我可以使用简单的PHP脚本来处理数据。

有什么建议吗?

5 个答案:

答案 0 :(得分:7)

我可能会建议Serialize Form to JSON

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};

然后你可以这样做:

var formArray = $("#myform").serializeObject();

答案 1 :(得分:1)

$.fn.valuesArr = function()
{
    var a = [];
    jQuery.each(this, function(i, field){
        a.push($.trim(field.value));
    });
    return a;
}

使用:

var myArr = $('input', $parentJQelem).valuesArr();

答案 2 :(得分:0)

您可以使用类似我的提交帮助程序作为基础

function submit(form) {
  var form = $(form);
  $.ajax(
    { data: $.param( form.serializeArray()),
      dataType:'script',
      type:'post',
      url: form.attr("action")});
}

而不是'serializeArray()'我会使用'serialize()'而不是使用ajax发布它你可以做任何你想做的事。

抱歉,现在没有更多时间,但希望这段代码可以帮到你。

答案 3 :(得分:0)

cletus在效率方面的答案是最好的。

然而,这是另一个不依赖于JSON的工作解决方案:

//this is my object I will fill my array with
function myObject(name, value)
{
    this.name = name;
    this.value = value;
}

var arr = $.map(
    $('span'), function (item) {
       var $item = $(item); //no need to $(item) 2 times
       return new 
         myObject(
           $item.attr("name"),     //name field
           $item.text()            //value field
         );
    }
);

arr将是myObject的数组,每个数组都包含name属性和value属性。

使用您的选择器代替$('span')

答案 4 :(得分:0)

但所有这些功能都不能在输入中使用数组名称。

示例 -

这对于提交帖子表格是正确的,但在序列化时我得到

形式[式[]]:2

这不正确 - 我需要 - 表格[type] []:2