我想使用具有相同cla的多个输入fiels创建一个JSON字符串。请允许我向您展示我的HTML解释
<div>
Email:<input title="QA" type="text" class="email">
Name: <input type="text" class="name">
</div>
<div>
Email:<input title="DEV" type="text" class="email">
Name: <input type="text" class="name">
</div>
<div>
Email:<input title="PROD" type="text" class="email">
Name: <input type="text" class="name">
</div>
目前我的JavaScript如下:
var ServerUser = [];
$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();
tmp = {};
tmp['id '] = id;
tmp['email '] = email;
ServerUser.push(tmp);
});
然而它产生以下结果
[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]
我想做的事情如下
[{title: QA, email: 'a@a.com', name: 'Paul'}, {title: PROD, email: 'b@b.com', name: 'Mark'},{title: DEV, email: 'c@c.com', name: 'Mike'}]
名称值来自相应的名称输入字段。
如何解决此问题?感谢您的帮助并阅读本文。
问候。
答案 0 :(得分:5)
var inputs = $('input.email'), tmp;
$.each(inputs, function(i, obj) {
tmp = {
'title': $(obj).attr('title'),
'email': $(obj).val(),
'name' : $(obj).siblings('.name').val()
};
ServerUser.push(tmp);
});
应该这样做
答案 1 :(得分:0)
为什么你不通过将变量插入prewrited字符串手动完成?
按每个标题重命名输入。
示例:
var onejson =“[{title: QA ,电子邮件: emailQA ,名称: nameQA },{title: DEV ,电子邮件: emailDEV ,名称: nameDEV },{title: PRO ,电子邮件: emailPRO ,名称: namePRO }];
我知道这是一个小步骤,但我认为这不是一个好的解决方案,我会像我所描述的那样做。希望有所帮助。
答案 2 :(得分:0)
这是一种糟糕的编程习惯,因为您的输入字段应该具有可用于获取其值的可辨认的唯一标识符,但是对于使用Next Sibling Selector的示例,您可以选择div中的下一个输入元素
示例:
var ServerUser = [];
$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();
var name = $(this).parent().first().find('input:last').val();
tmp = {};
tmp['TaskID'] = id;
tmp['ClientEmail'] = email;
tmp['ClientName'] = name;
ServerUser.push(tmp);
});
这是一个很长的选择器,并且可能有更好的方法来构建表单,因此您不需要这样做,但只要名称输入是您将要拥有的最后一个,这将是工作。