js 編輯彈窗顯示 文本框賦值方法封裝

js 編輯彈窗顯示 文本框賦值方法封裝

  • 場景


    image.png

上圖所示點(diǎn)擊編輯按鈕彈出一個(gè)窗口例嘱,這時(shí)需要對彈窗內(nèi)的文本框進(jìn)行賦值顯示拼卵,傳統(tǒng)寫法是:
$('#tag_name').val('1'); $('#type').val(1) $('#sort').val(1)
如果后面字段多起來,這樣寫就太耗費(fèi)時(shí)間了腋腮,于是便封裝了以下方法(參考網(wǎng)上別人發(fā)的即寡,進(jìn)行了略微調(diào)整)

封裝方法如下(目前只支持 input select textarea 賦值):

(function($){
    $.fn.extend({
        initForm:function(options){
            //默認(rèn)參數(shù)
            var defaults = {
                jsonValue:"",
                exclude:[],     //不需要進(jìn)行初始化的name,將name字符串?dāng)?shù)組傳入
                name_equal:{}, //name相同時(shí),對應(yīng)下標(biāo)
                isDebug:false   //是否需要調(diào)試莺丑,這個(gè)用于開發(fā)階段墩蔓,發(fā)布階段請將設(shè)置為false,默認(rèn)為false,true將會(huì)把name value打印出來
            }
            //設(shè)置參數(shù)
            var setting = $.extend({}, defaults, options);
            var form = this;
            jsonValue = setting.jsonValue;
            name_equal = setting.name_equal;
            // console.log(jsonValue);
            //如果傳入的json字符串昏名,將轉(zhuǎn)為json對象
            if($.type(setting.jsonValue) === "string"){
                jsonValue = $.parseJSON(jsonValue);
            }
            if($.type(setting.name_equal) === "string"){
                name_equal = $.parseJSON(name_equal);
            }


            //如果傳入的json對象為空葡粒,則不做任何操作
            if(!$.isEmptyObject(jsonValue)){
                var debugInfo = "";
                $.each(jsonValue,function(key,value){
                    //是否開啟調(diào)試膜钓,開啟將會(huì)把name value打印出來
                    if(setting.isDebug){
                        //alert("name:"+key+"; value:"+value);
                        debugInfo += "name:"+key+"; value:"+value+" || ";
                    }
                    if(setting.exclude.indexOf(key) > -1){
                        if (name_equal[key] !== undefined){
                            key = name_equal[key]
                        }

                        var formField = form.find(" [name='"+key+"']");

                        if($.type(formField[0]) === "undefined"){
                            if(setting.isDebug){
                                alert("can not find name:["+key+"] in form!!!");    //沒找到指定name的表單
                            }
                        } else {
                            var fieldTagName = formField[0].tagName.toLowerCase();
                            // console.log(fieldTagName);
                            if(fieldTagName == "input"){
                                if(formField.attr("type") == "radio"){
                                    $("input:radio[name='"+key+"'][value='"+value+"']").attr("checked","checked");
                                }else {
                                    formField.val(value);
                                }
                            } else if(fieldTagName == "select"){
                                //do something special
                                formField.val(value);
                            } else if(fieldTagName == "textarea"){
                                //do something special
                                formField.val(value);
                            } else {
                                formField.val(value);
                            }
                        }
                    }
                })
                if(setting.isDebug){
                    alert(debugInfo);
                }
            }
            return form;    //返回對象,提供鏈?zhǔn)讲僮?        }
    });
})(jQuery)

調(diào)用方法如下:

 let name_arr = ['id','tag_name','type','sort'];
 let name_equal = {}
 let options = {jsonValue:data,exclude:name_arr,name_equal:name_equal,isDebug:false};
 $("#edit_form").initForm(options)

方法解釋:
name_arrinputname屬性名沃疮,如: <input type='text' name='tag_name'>

name_equal: 當(dāng)有多個(gè)input屬性名相同,但數(shù)組下標(biāo)不同時(shí)邑茄,即可指定不同的下標(biāo)對應(yīng) 返回?cái)?shù)據(jù)的值俊啼,如:

 <input type='text' name='tag_name[1]'>
  <input type='text' name='tag_name[2]'>
  <input type='text' name='tag_name[2]'>

這時(shí) name_equal 值應(yīng)該為:

name_equal = {
    tag_name_1:'tag_name[1]',
    tag_name_2:'tag_name[2]',
    tag_name_3:'tag_name[3]',
}

如上代碼中,tag_name_1 為后端返回的數(shù)據(jù)結(jié)構(gòu)

options
第一個(gè)參數(shù) jsonValue:后端返回的數(shù)據(jù)(json格式
第二個(gè)參數(shù) exclude:需要賦值的input框數(shù)組同木,name_arr
第三個(gè)參數(shù) name_equal:有相同name跛十,下標(biāo)不同時(shí)傳入的json 數(shù)組值
第四個(gè)參數(shù) is_debug: 是否開啟調(diào)試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芥映,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颊郎,更是在濱河造成了極大的恐慌霎苗,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件内狸,死亡現(xiàn)場離奇詭異昆淡,居然都是意外死亡刽严,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門眨补,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倒脓,“玉大人崎弃,你說我怎么就攤上這事含潘∠呋椋” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵腾窝,是天一觀的道長居砖。 經(jīng)常有香客問我,道長循集,這世上最難降的妖魔是什么蔗草? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任咒精,我火速辦了婚禮,結(jié)果婚禮上歇拆,老公的妹妹穿的比我還像新娘范咨。我一直安慰自己,他們只是感情好输吏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布替蛉。 她就那樣靜靜地躺著,像睡著了一般它浅。 火紅的嫁衣襯著肌膚如雪熙含。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天邮弹,我揣著相機(jī)與錄音腌乡,去河邊找鬼夜牡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛急迂,可吹牛的內(nèi)容都是我干的蹦肴。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼勺阐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了矛双?” 一聲冷哼從身側(cè)響起渊抽,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎议忽,沒想到半個(gè)月后懒闷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栈幸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年毛雇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侦镇。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灵疮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出震捣,到底是詐尸還是另有隱情,我是刑警寧澤闹炉,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布蒿赢,位于F島的核電站,受9級(jí)特大地震影響渣触,放射性物質(zhì)發(fā)生泄漏羡棵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一嗅钻、第九天 我趴在偏房一處隱蔽的房頂上張望皂冰。 院中可真熱鬧店展,春花似錦、人聲如沸秃流。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舶胀。三九已至概说,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚣伐,已是汗流浹背糖赔。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轩端,地道東北人放典。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像船万,于是被迫代替她去往敵國和親刻撒。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容