使用easyui窗口:以下是父頁面
<html> <head> <title>定時調度管理</title> </head> <body width="100%" height="100%"> <table id="ListTable" title="定時調度管理" style="width: 100%;height: 100%"></table> <div id="homepicAddWin"></div> </body> <script>
這里在原窗口打開
function edit(id){
        var $win;
        $win = $('#homepicAddWin').window({
            title:'調度任務',
            href:"/api/jobs/jobForm?id="+id,
            width: 450,
            height: 300,
            shadow: true,
            modal: true,
            iconCls: 'icon-edit',
            closed: true,
            minimizable: false,
            maximizable: false,
            collapsible: false
        });
        $win.window('open');
    } 
        
注意,有些人會發現在窗口菜單中會出現無法使用js函數,這是因為父窗口在引用中的是子頁面中<body></body>
之間的內容,如果script腳本寫在body外將無法使用;子頁面中我有一個selec標簽用來回顯定時腳本狀態
<tr> <div> <td><label for="isPause">狀態:</label></td> <td> <select id="isPause" name="isPause" style="width: 80px" class="easyui-combobox" data-options="required:true" value="${result.isPause}"> <option value="true">已暫停</option> <option value="false">運行中</option> </select> </td> </div> </tr>
直接使用
$(function () { 
           $("#isPause").combobox('setValue','${result.isPause}');
} 
        這個會報錯:jquery.easyui.min.js:12418 Uncaught TypeError: Cannot read property 'options' of undefined
意思是找不到options參數。這是因為easyui會動態改變頁面dom結構,也就是說會在頁面加載后,easyui會自己在頁面生成combobox。
這個時候問題就來了。
因為jquery的$(function(){})方法也是在頁面加載后就執行的,這句語句的執行順序會在easyui生成combobox之前,這個時候頁面還沒有對應的combobox,所以會報錯。
那么如果還是要這個操作,就在頁面加載時設置一個定時器,判斷easyui的控件是否已經完成了初始化。當已完成初始化時,才能使用控件。這樣就通過性能,來換取系統的穩定執行。
參考:https://blog.csdn.net/easonjake/article/details/90671010
修改:
$(function () { var interval = window.setInterval(function () { //等待頁面加載完畢 if($("#isPause").combobox().length > 0){ $("#isPause").combobox('setValue','${result.isPause}'); window.clearInterval(interval); } },100) })
等待頁面加載完之后,再給select賦值。
