我有许多html-input和一个包含大量信息的非常大的对象。
这些输入中的许多都直接链接到对象中的特定字符串。例如:
<input name="alpha_beta_gamma" type="input" val="newstring" />和
obj = {
alpha: {
beta: {
gamma: 'oldString'
}
},
stuff2: {
whatever: {
weathertoday: 'rainy',
sun: false
},
phone: '1234567'
}
}值"sun“的复选框字段的名称为"stuff2_whatever_sun”,而"phone“字段的名称为"stuff2_phone”,而"gamma“输入字段的名称为"alpha_beta_gamma”。
希望你们能理解我:)
我将使用一个jQuery focusout事件:
$('input.specialClass').live('focusout', function(){
obj[whatevercomeshere] = $(this).val();
});发布于 2011-06-24 23:21:26
您可能想要使用eval
$('input').each(
function() {
var $this = $(this);
$this.val(eval("obj." + $this.attr('name').replace(/_/g, '.'));
}
);发布于 2011-06-24 23:20:35
$('input.specialClass').live('focusout', function(){
var name = $(this).attr('name');
var o = obj, parts = name.split("_");
$.each(parts, function(k, v) {
if(k == parts.length - 1) {
o[v] = $(this).val();
} else {
o = o[v];
}
});
});发布于 2011-06-24 23:40:11
这里有一种方法:
var obj = {},
name2json = function(o, name, val){
var prop = name.splice(0, 1);
o[prop] = o[prop] || {};
if(name.length === 0){
o[prop] = val;
}else{
name2json(o[prop], name, val);
}
};
$('input.specialClass').live('focusout', function(){
name2json(obj, this.name.split('_'), this.value);
});https://stackoverflow.com/questions/6469842
复制相似问题