jQuery前端框架easyui使用Dialog時(shí)bug處理
最近一直都在用easyui前端框架來開發(fā)設(shè)計(jì)UI,但在使用Dialog時(shí),發(fā)現(xiàn)如果頁面內(nèi)容比較多,就會(huì)出現(xiàn)問題,首先看一下我的原代碼:
<input type="button" value="確認(rèn)預(yù)約" id="btnconfirm" onclick="javascript:openconfirmDlg();" />
<div id="confirmd">
<p>請(qǐng)選擇確認(rèn)結(jié)果:</p>
<p><input type="radio" value="True" id="rtrue" name="rresult" class="rresult" /><label for="rtrue">成功</label>
<input type="radio" value="False" id="rfalse" name="rresult" class="rresult" /><label for="rfalse">失敗</label></p>
</div>
<script type="text/javascript">
$("#confirmd").dialog({
title: '預(yù)約確認(rèn)',
iconCls: 'icon-save', resizable: false, modal: true, closed: true,
width: 200, height: 200,
buttons: [{ text: '提 交', handler: function () {
alert("ok");
}
}, { text: '取 消', handler: function () {
$("#confirmd").dialog("close");
}
}]
});
function openconfirmDlg() {
$("#confirmd").dialog("open");
}
</script>
當(dāng)點(diǎn)擊【確認(rèn)預(yù)約】按鈕時(shí),打開對(duì)話框,效果如下:
可以看到幾個(gè)問題,一是遮罩層沒有全部蓋住網(wǎng)頁內(nèi)容,二是對(duì)話框不見了,當(dāng)然不是真的不見了,而是顯示到了頁面的上方,需要將滾動(dòng)條拖回到項(xiàng)端方可見到,造成這樣的原因很清楚,一是獲取網(wǎng)頁內(nèi)容高度不正確,只是得到了window的高度(即可視高度),才會(huì)出現(xiàn)遮罩不完整,二是定位不正確,未能正確識(shí)別到scrollTop,造成對(duì)話框定位不準(zhǔn),針對(duì)這些問題,我做出了相應(yīng)的改進(jìn),從而解決了該問題,下面是改進(jìn)后的代碼:
<input type="button" value="確認(rèn)預(yù)約" id="btnconfirm" onclick="javascript:openconfirmDlg();" />
<div id="confirmd">
<p>請(qǐng)選擇確認(rèn)結(jié)果:</p>
<p><input type="radio" value="True" id="rtrue" name="rresult" class="rresult" /><label for="rtrue">成功</label>
<input type="radio" value="False" id="rfalse" name="rresult" class="rresult" /><label for="rfalse">失敗</label></p>
</div>
<script type="text/javascript">
$("#confirmd").dialog({
title: '預(yù)約確認(rèn)',
iconCls: 'icon-save', resizable: false, modal: true, closed: true,
width: 200, height: 200,
buttons: [{ text: '提 交', handler: function () {
alert("ok");
}
}, { text: '取 消', handler: function () {
$("#confirmd").dialog("close");
}
}]
});
window.onscroll = function () {
$("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 });
}
function openconfirmDlg() {
$("#confirmd").dialog("open");
$("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 });
$(".window-mask").css({ height: $(document).height()});
}
</script>
現(xiàn)在打開對(duì)話框就正常了,效果如下:
即使?jié)L動(dòng)也能始終處在網(wǎng)頁中間,效果如下:
確保如上效果的關(guān)鍵代碼是:
$("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 }); //移動(dòng)到當(dāng)前內(nèi)容頁面的中間
$(".window-mask").css({ height: $(document).height()}); //調(diào)整遮罩層的高度為網(wǎng)頁內(nèi)容高度
大家測試下,是不是比之前的好用多了,本人測試了大多數(shù)瀏覽器都沒有問題,如果有遺漏的,還請(qǐng)留言告之,本代碼持續(xù)更新。
相關(guān)文章
jQuery實(shí)現(xiàn)文件編碼成base64并通過AJAX上傳的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)文件編碼成base64并通過AJAX上傳的方法,涉及jQuery前臺(tái)使用FileReader對(duì)象編碼base64文件進(jìn)行ajax上傳及后臺(tái)php處理相關(guān)操作技巧,需要的朋友可以參考下2018-04-04jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法示例詳解
這篇文章主要介紹了jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法的應(yīng)用,需要的朋友可以參考下2014-05-05jQuery訪問json文件中數(shù)據(jù)的方法示例
這篇文章主要介紹了jQuery訪問json文件中數(shù)據(jù)的方法,結(jié)合實(shí)力形式分析了jQuery事件響應(yīng)及json文件的加載、讀取、遍歷等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01基于jQuery創(chuàng)建鼠標(biāo)懸停效果的方法
這篇文章主要介紹了基于jQuery創(chuàng)建鼠標(biāo)懸停效果的方法,實(shí)例分析了jQuery實(shí)現(xiàn)鼠標(biāo)特效的原理與詳細(xì)步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03jquery ajax對(duì)特殊字符進(jìn)行轉(zhuǎn)義防止js注入使用示例
如果有人在留言里寫入了js語句,這結(jié)語句都會(huì)被執(zhí)行.解決辦法就是對(duì)這些特殊字符進(jìn)行轉(zhuǎn)義再顯示出來,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-11-11jQuery Datatables表頭不對(duì)齊的解決辦法
這篇文章主要為大家詳細(xì)介紹了jQuery Datatables表頭不對(duì)齊的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11