繁体   English   中英

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

[英]Jquery get all input values and create an array (with names)

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

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

有什么建议么?

我可能建议将表格序列化为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();
$.fn.valuesArr = function()
{
    var a = [];
    jQuery.each(this, function(i, field){
        a.push($.trim(field.value));
    });
    return a;
}

使用:

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

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

例子-

这是正确的提交职位表格,但序列化时我得到

形式[类型[]]:2

这是不正确的-我需要-form [type] []:2

您可以使用诸如我的提交助手之类的内容

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

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

抱歉,暂时没有更多时间,但是希望此摘要对您有所帮助。

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM