【问题标题】:Jquery getting nested inputs of Div, placing in ObjectJquery获取Div的嵌套输入,放置在Object中
【发布时间】:2015-01-27 07:02:19
【问题描述】:

我对这个嵌套循环束手无策。 我正在尝试创建一个对象,其中包含按包含 div id 分组的嵌套对象。 到目前为止,这就是我所拥有的:

$('#survey-submit').on('click', function (e) {


    var formData = {};
    var item = {};
        $("div[id^='question-']").each(function () {
            var id = '#' + $(this).attr('id');
            var $this = $(this);
            formData[id] = $this.children('input, select,checkbox').each(function () {
                item[this.name] = this.value;
            });


            //console.debug(formData);
        });
        console.debug(formData);
    return false;
});

控制台日志的结果是 div 的所有输入元素都有类似问题的开头,我得到了预期数量的新对象,它们都是动态命名的,但它们都包含相同的东西。

每个对象的内容并不特定于我试图从中生成它的这个对象,任何帮助将不胜感激!

【问题讨论】:

  • 我不认为 each 像你认为的那样工作 api.jquery.com/jquery.each
  • 我会看看那个。你认为还有什么其他功能可以做我想做的事情吗?
  • 您可以使用each 执行此操作,但它不会将this 重新分配给变量。放入indexvalue 参数并使用value 而不是this
  • 好的,我试试看。并根据我的结果在此处更新
  • 另外,您似乎没有使用包含 div 来过滤任何内容。你可以做类似var emptyTextBoxes = $(e.target).find('input.surveyInputs')...

标签: javascript jquery nested-loops


【解决方案1】:

我在这里找到了解决问题的方法:jquery how to get form element types, names and values

我最终这样做了:

    $("div[id^='question-']").each(function () {
            var id = '#' + $(this).attr('id');
            var $this = $(this);
      var inputs= $(id+' :input').map(function(index, elm) {
    return {name: elm.name, value: $(elm).val()};
}).get();
       formData[id]=inputs;
        });

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多