jQuery基于json对象自动给表单元素赋值

这篇博客介绍了一个前端开发工具,它利用jQuery和JSON对象,根据表单元素的name属性匹配并自动为表单字段赋值。开发者只需确保表单name属性与JSON对象属性结构对应,如input name='a.b.c'对应json对象内的a.b.c属性。
摘要由CSDN通过智能技术生成
为了提高前端小伙伴的开发效率,造了个基于json对象根据表单元素的name属性自动赋值的轮子

json2form:function(obj){
var nodeParent = null;
var value = undefined;
var $el = null;
var nodeName = "";
for(var i in obj){
value= obj[i] ;
if(value === undefined || value===null){
continue;
}
if(typeof value == 'object'){
nodeParent=obj.nodeParent;
value.nodeParent=nodeParent?nodeParent+"."+i : i;
if(value instanceof Array){
for(var mm=0;mm<value.length;mm++){
var ms=value[mm];
if(typeof ms == 'object'){
nodeParent=ms.nodeParent;
ms.nodeParent=ms.nodeParent?ms.nodeParent+"."+i+"["+mm+"]":i+"["+mm+"]";
arguments.callee(ms);
}

}

$el=$("[name='"+i+"']");
if($el.is(":checkbox")){
$el.each(function(){
if($(this).val() == value){
$(this).prop("checked",true);
}
})
}
else if($el.is(":radio")){
$el.each(function(){
if($(this).val() == value){
$(this).prop("checked",true);
}
})
}
}else{ //递归
arguments.callee(value);
}
}
else{
nodeName=obj.nodeParent?obj.nodeParent+"."+i : i ;

$el=$("[name='"+nodeName+"']");
if($el.length > 0){
// console.log("匹配数据名称:"+nodeName+"值:"+value);
if($el.is(":text")||$el.attr("type")=="hidden"){
if($el.data("money") && $el.data("money") == "money"){
value = outputdollars(value);
}
$el.val(value);

}else if($el.is(":radio")){
$el.each(function(){
if($(this).val()==value){
$(this).prop("checked",true);
}
})
}
else if($el.is("select")){
$el.find("option").filter(function(){return $(this).val() == obj[i];}).prop("selected",true);
}else if($el.is("textarea")){
$el.val(value)
}
}
}
}

}


注意: 表单的name属于与json对象的属性名为一致,保持继承链。例如 input name='a.b.c' 表示json对象里面的a属性里面的b属性的c属性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值