jQueryはjsonオブジェクトに基づいてフォーム要素に値を自動的に割り当てます

巴扎黑
リリース: 2016-11-25 15:27:43
オリジナル
1907 人が閲覧しました

フロントエンドパートナーの開発効率を向上させるため、form要素のname属性に従ってjsonオブジェクトを元に自動で値を代入するホイールを作成しました

 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 == &#39;object&#39;){
nodeParent=ms.nodeParent;
ms.nodeParent=ms.nodeParent?ms.nodeParent+"."+i+"["+mm+"]":i+"["+mm+"]";
arguments.callee(ms);
}
}
$el=$("[name=&#39;"+i+"&#39;]");
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=&#39;"+nodeName+"&#39;]");
           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)
              }
           }
       }
   } 
 
}
ログイン後にコピー

注:フォームの名前は一貫していますjson オブジェクトの属性名を使用すると、継承チェーンが維持されます。たとえば、input name='a.b.c' は、json オブジェクトの a 属性の b 属性の c 属性を表します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!