我想根据输入表单创建一个如下所示的嵌套对象。 第一个键是 name 属性,在它里面会被要求:true 如果输入包含 reqiuder 属性等。我假设我需要一个嵌套的 foreach,我不确定。我添加了到目前为止我尝试过的代码。
这是我喜欢创建的对象:
var obj = {
'email.address': {
required: true,
email: true
},
'first.name': {
required: false
},
'last.name': {
required: true
}
};
这是我目前的代码:
var formInputs = $('input'),
obj = {};
$.each(formInputs, function(key, value) {
obj[this.name] = value.name;
});
console.log(obj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="email" name="email.address" placeholder="Email address" required />
<input type="text" name="first.name" placeholder="First name" />
<input type="text" name="last.name" placeholder="Last name" required />
</form>
答案 0 :(得分:1)
for (var i = 0, v; v = formInputs[i]; i++) {
for (var o of Object.keys(obj)) {
if (o !== v.name) {
continue;
}
for (var n of Object.keys(obj[o])) {
v[n] = obj[o][n];
}
}
}
答案 1 :(得分:1)
问题在于您没有在解析之前等待文档加载。
jquery 允许您使用 $(document).ready()
这里有一个例子,你可以用
替换你的js$(document).ready(function(){
var formInputs = $('input'),
obj = {};
$.each(formInputs, function(key, value) {
obj[this.name] = {required: value.required}
});
console.log(obj)
})