layui利用jQuery設置下拉列表的值


  

  今天在利用jQuery動態設置下拉列表的值的時候確怎么也賦值不上去,其中用到了layui框架,源代碼如下:

    $.post(contextPath+'/courseLibrary/getCourseBaseInfoById.do',{"courseId":courseId},function (courseInfoBack) {
        // initSelectValue("[name='courseplatform']",courseInfoBack.courseplatform);
        $("[name='courseid']").val(courseInfoBack.courseid);//向隱藏的課程主鍵賦值
        $("[name='coursenum']").val(courseInfoBack.coursenum);
        $("[name='courseplatform'] option[value='"+courseInfoBack.courseplatform+"']").attr("selected","true");
        $("[name='coursenamecn']").val(courseInfoBack.coursenamecn);
        $("[name='coursenameen']").val(courseInfoBack.coursenameen);
        $("[name='coursenature'] option[value='"+courseInfoBack.coursenature+"']").attr("selected","true");
        $("[name='credit']").val(courseInfoBack.credit);
        $("[name='coursehour']").val(courseInfoBack.coursehour);
        $("[name='teachhour']").val(courseInfoBack.teachhour);
        $("[name='experimenthour']").val(courseInfoBack.experimenthour);
        $("[name='computerhour']").val(courseInfoBack.computerhour);
        $("[name='practicehour']").val(courseInfoBack.practicehour);
        $("[name='weeklyhour']").val(courseInfoBack.weeklyhour);
       $("[name='coursehourmethod'] option[value='"+courseInfoBack.coursehourmethod+"']").attr("selected","true");
        $("[name='scoringway'] option[value='"+courseInfoBack.scoringway+"']").attr("selected","true");
    },'json')

 

 

  后來查看頁面源碼發現option確實多了selected屬性,可是由於使用了layui,layui將selected包裝為dl與dd,所以我們看到的會失效:

 

 

 

解決辦法:(更新渲染)

  layui的 Form模塊的自動化渲染是會對其失效的。雖然我們沒有雙向綁定機制, 但沒有關系,你只需要執行 form.render(type, filter); 方法即可。

第一個參數:type,為表單的type類型,可選。默認對全部類型的表單進行一次更新。可局部刷新的type如下表:

參數(type)值 描述
select 刷新select選擇框渲染
checkbox 刷新checkbox復選框(含開關)渲染
radio 刷新radio單選框框渲染
form.render(); //更新全部
form.render('select'); //刷新select選擇框渲染
//……

 

第二個參數:filter,為 class="layui-form" 所在元素的 lay-filter="" 的值。你可以借助該參數,對表單完成局部更新。

【HTML】
<div class="layui-form" lay-filter="test1"></div>
<div class="layui-form" lay-filter="test2"></div>
【JavaScript】
form.render(null, 'test1'); //更新 lay-filter="test1" 所在容器內的全部表單狀態
form.render('select', 'test2'); //更新 lay-filter="test2" 所在容器內的全部 select 狀態
//……

 

 參考:http://www.layui.com/doc/modules/form.html#render

 

 

 

 

 

 因此上述代碼改為:

    $.post(contextPath+'/courseLibrary/getCourseBaseInfoById.do',{"courseId":courseId},function (courseInfoBack) {
        // initSelectValue("[name='courseplatform']",courseInfoBack.courseplatform);
        $("[name='courseid']").val(courseInfoBack.courseid);//向隱藏的課程主鍵賦值
        $("[name='coursenum']").val(courseInfoBack.coursenum);
     $("[name='courseplatform'] option[value='"+courseInfoBack.courseplatform+"']").attr("selected","true");
        $("[name='coursenamecn']").val(courseInfoBack.coursenamecn);
        $("[name='coursenameen']").val(courseInfoBack.coursenameen);
       $("[name='coursenature'] option[value='"+courseInfoBack.coursenature+"']").attr("selected","true");
        $("[name='credit']").val(courseInfoBack.credit);
        $("[name='coursehour']").val(courseInfoBack.coursehour);
        $("[name='teachhour']").val(courseInfoBack.teachhour);
        $("[name='experimenthour']").val(courseInfoBack.experimenthour);
        $("[name='computerhour']").val(courseInfoBack.computerhour);
        $("[name='practicehour']").val(courseInfoBack.practicehour);
        $("[name='weeklyhour']").val(courseInfoBack.weeklyhour);
        $("[name='coursehourmethod'] option[value='"+courseInfoBack.coursehourmethod+"']").attr("selected","true");
        $("[name='scoringway'] option[value='"+courseInfoBack.scoringway+"']").attr("selected","true");
 layui.use(['form'], function () {
            $ = layui.jquery;
            var form = layui.form;
            form.render(); //刷新select選擇框渲染
 });

    },'json')

 

 

 最后再次查看源代碼:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM