【问题标题】:Adding a list of data to object inside loop将数据列表添加到循环内的对象
【发布时间】:2015-08-29 22:54:10
【问题描述】:

我一直在尝试将值列表添加到对象/关联数组中,以便我可以从多选插件的输入中获取值列表。我想将输入的名称添加为对象键。

问题:似乎没有创建一个列表,只是更新循环中的最后一个输入值......我在这里做错了什么?

var selectObj = {}; 

$('input').each(function(inputKey)
{
    alert($(this).val());   //all input values shown
    selectObj[$(this).attr('name')] = $(this).val(); 
 });

alert(JSON.stringify(selectObj));    //last input value shown

期望的结果:

  • (1 个多选):

selectObj={"listName1":"12,3,31,4"}

  • (2个多选):

selectObj={"listName1":"12,3,31,4"},{"listName2":"1,32,43,5"}

【问题讨论】:

  • 所有元素的名称属性是否不同?否则它只会一遍又一遍地设置相同的属性,并解释为什么只显示最后一个输入结果。没有看到标记很难分辨。
  • 你能显示生成的源代码吗?我怀疑多选插件
  • 我使用该名称是因为它代表所有多选输入,而不是单个输入的 id...而且它适用于另一个使用相同名称标签的插件...另外我不认为我可以通过插件的选项设置每个输入的 id。
  • @ gillesc : 嗯,它会是一样的,这就是它替换现有值的原因。这是故意的,我试图将下一个值添加到同一个列表中。项目名称代表列表名称,因此可以在同一个表单中使用多个多选。
  • 啊,先创建一个数组然后像if (!selectObj[$(this).attr('name')]) { selectObj[$(this).attr('name')] = []; } selectObj[$(this).attr('name')].push(value_here);

标签: jquery object each


【解决方案1】:

这是您可以根据您对所需结果的编辑所做的操作

var selectObj = {}; 
var inputValues = [];
$('input').each(function(inputKey){
  attrName = $(this).attr('name');
  inputValues.push(value);

});
 selectObj[attrName] = inputValues .toString();

【讨论】:

  • 有没有办法在对象中创建一个数组,这样我就可以将值添加到同一个列表中,而不是通过迭代创建一个新的列表名称?
  • 是的,您绝对可以这样做,这就是我在回答中编辑的内容。希望这就是你要找的
  • 这将是添加列表的解决方案,但输入可能包含许多列表/attrName 并且不满足此要求。尽管上述 cmets 中的 gillesc 解决方案两者兼而有之!
【解决方案2】:

感谢 gillesc 帮助我解决了这个问题,它现在成功检查了所有已被各种多选插件检查或选择的输入并输出到 inputValues对象:

$('input').each(function()
{
    if($(this).closest('li').hasClass("checked") || $(this).closest('li').hasClass("active"))
    {                 
        var selectKey = $(this).attr('name');                  
        if (!inputValues[selectKey]) 
        { 
            inputValues[selectKey] = [];
        } 
        inputValues[selectKey].push($(this).val());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2018-05-19
    • 1970-01-01
    相关资源
    最近更新 更多