面白い問題です。onClose
オーバーレイをクリックした場合 (モーダル ダイアログの外をクリックした場合)、コールバックは呼び出されず、ダイアログは閉じられます。
面白いですがjqModal.js
、要件を実装するのに最適なオプションが既にあります。のcloseoverlay
オプションです$.fn.jqm
(行を参照)。問題は、jqGrid にオプションを設定できるパブリック プロパティがないことです。jquery.jqGrid.src.js
を変更するだけcloseoverlay : true
で( in の変更にcloseoverlay : false
対応します)、必要な動作が得られます。closeoverlay:!0
closeoverlay:!1
jquery.jqGrid.min.js
問題は、コード jqGrid を変更せずに要件を実現する簡単な方法が見当たらないことです。
更新:jqModal.js
モジュールのコードをもう一度分析したところ、 jqGridのソース コードを変更せずに簡単な方法を見つけました。モジュールは最小化された形でしか存在しないため、分析は困難です。そのため、コードを読むのは困難です。
jqModal.js
解決策:モジュールのデフォルトを変更する次の行を含める必要があります。
$.jqm.params.closeoverlay = false;
説明:モジュールの行は次のように初期化されますjqModal.js
$.jqm
$.jqm = {
hash: {},
open: function (s,t) { ... },
close: function (s) { ... },
params: {}
};
したがって、インクルードした後のどこでも、空のオブジェクトとしてjquery.jqGrid.min.js
持っています。$.jqm.params
のパラメータのデフォルト値を提供するために使用できますjqModal.js
(のパラメータのリストで直接指定されていません$.jqm
)。したがって、オーバーレイをクリックしたときに jqGrid ダイアログを閉じることを拒否するために、 (または) の$.jqm.params.closeoverlay = false;
後のどこかに含めることができます。jquery.jqGrid.min.js
jquery.jqGrid.src.js