這是一個有趣的問題。 onClose
如果點擊疊加層(如果點擊了模式對話框),回調將不會被調用,對話框將被關閉。
這很有趣,但jqModal.js
已經有了完美的選項來實現你的requiremens。它的closeoverlay
選項$.fn.jqm
(見the line)。問題是jqGrid沒有任何允許設置選項的公共屬性。如果你只是修改jquery.jqGrid.src.js
closeoverlay : true
到closeoverlay : false
(它對應closeoverlay:!0
更改爲closeoverlay:!1
jquery.jqGrid.min.js
),那麼你將有你需要的行爲。
問題是,我沒有看到任何簡單的方法來實現您的要求,而無需修改代碼jqGrid。
修訂:我分析的jqModal.js
模塊一次代碼和心中已經發現簡單的方式不改變的jqGrid的源代碼。分析很困難,因爲模塊只能以最小化的形式存在。所以很難閱讀代碼。
解決辦法:你應該包括以下行這改變jqModal.js
模塊的默認設置:
$.jqm.params.closeoverlay = false;
說明:jqModal.js
的the lines模塊初始化$.jqm
爲
$.jqm = {
hash: {},
open: function (s,t) { ... },
close: function (s) { ... },
params: {}
};
所以到處都包括jquery.jqGrid.min.js
你後有$.jqm.params
作爲空對象。它可用於提供參數jqModal.js
的缺省值(它們不是在$.jqm
參數列表中直接指定的參數)。因此,您可以在jquery.jqGrid.min.js
(或jquery.jqGrid.src.js
)之後的某個位置包含$.jqm.params.closeoverlay = false;
以拒絕在點擊疊加層時關閉jqGrid對話框。
是的,這不是一個簡單的方法來做到這一點。另外,我想向jqGrid開發人員推薦它。我會檢查你的建議。 – DaGLiMiOuX 2013-05-06 07:19:05
非常感謝你!它有效,但我認爲他們應該做一個簡單的方法來做到這一點,例如一個新的屬性。如果你認爲向開發者建議是個好主意,那麼我會向他們提出建議。也想道歉,不要在我之前發佈的其他問題上解釋。正如我所說,謝謝!^_^ – DaGLiMiOuX 2013-05-06 07:29:03
@DaGLiMiOuX:不客氣!正如我寫到在源代碼中更改「closeoverlay」通常不是最好的方法,但它實際上是最簡單的* *。我稍後會將相應的建議發佈到trirand。問題是jqModal模塊在jqGrid的代碼中使用了很多次*內部*。所以在jqGrid方法中公開這個選項將會改變許多jqGrid代碼行。人們只需要將下面的選項轉發給jqModal模塊。 – Oleg 2013-05-06 07:36:05