フォームを含むダイアログを開くためにjQueryのモーダルダイアログを使用しています。解決できないのは、モーダルダイアログに追加されたコンポーネントにイベントをバインドする方法です。この場合、クリックをバインドするか、ダイアログに配置されているチェックボックスに変更します。ダイアログがロードされたときにトリガーされる成功メソッドはないようです。これが私のやり方です:
これは、JavaScriptの最初、ready-functionの最初に行います。
$( "#dialog:ui-dialog" ).dialog( "destroy" );
$( "#dialog-modal" ).dialog({
autoOpen: false,
show: "blind",
hide: "explode",
minWidth: 400,
modal: true
});
少し後で、ボタンをクリックしたときにこれを行います。
$('#dialog-modal').dialog( "option", "title", lang.localized_text.ADD_AGENT);
$('#dialog-modal').live('dialogopen', function(msg){
alert("Opens");
$("#select_all").live('click', function(msg){
alert("clicked");
});
});
$.get("https://" + hostname + "/modules/core/useradmin/adminactivities/admin_add_agent.php",function(e){
var obj = $.parseJSON(e);
$("#dialog-modal").html(obj.html);
$("#dialog-modal").dialog("open");
addAddAgentValidation();
}
});
ダイアログが開く前にalert( "Opens")が表示されていることがはっきりとわかります。したがって、dialogopenは、ダイアログのロードが完了する前にトリガーされます。ただし、検証ハンドラー(検証チェックをバインドするvalidate関数を呼び出す)は機能します。
alert( "クリック"); トリガーされることはありません。
モーダルダイアログのコンポーネントにイベントをバインドするにはどうすればよいですか?ダイアログが作成されたときのコールバック関数はありますか?