循环表单输入并将数据存储在对象中

时间:2016-05-27 21:40:46

标签: javascript jquery

我只是想创建一个javascript对象。

const data = {};

// loop through each input found in form
$('#form_name').filter(':input').each(function() {
  const $id = $(this).attr('id');
  const $value = $(this).attr('value');
  data[$id] = $value;
  return data;
});

查看这个小提琴,告诉你我的意思...... https://jsfiddle.net/atg5m6ym/5230/

预期输出将是这样的:

{
    "username": "johndoe",
    "email": "johndoe@gmail.com",
    ...
}

这种方式目前不起作用......我怎样才能将它变成js对象,或者如果有人能提供更好的方法,那就太好了。感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您不应该在每个循环中返回数据对象,而是在:

之后
var setData = function(){
   var data = {};

   $('#form_name').filter(':input').each(function() {
       const $id = $(this).attr('id');
       const $value = $(this).attr('value');
       data[$id] = $value;
   });

   return data;
}

var data = setObject();

另外,您不应该将对象定义为常量,因为您在

之后立即更改了它的值

答案 1 :(得分:2)

非jQuery版本:

var formElements = document.getElementById('form_name').childNodes;
var obj = {};
for(element in formElements) {
  if(formElements[element].nodeName === 'INPUT') {
    obj[formElements[element].id] = formElements[element].value
  }
};

https://jsfiddle.net/d5uejqLf/