JqueryUIダイアログで遊んでいます。グリッドビュー、グリッドビューを更新するボタン、およびリンクを含むページがあります。リンクをクリックすると、レコードの詳細を示すダイアログウィンドウがポップアップ表示されます。
子ページで[保存]を押すと、親ページからjavascript関数を呼び出す子ページがあります。この関数では、ボタンクリックイベントを実行しようとしましたが、機能していないようです。
以下のshowThanks関数を見ると、アラートは機能し、ボタンのテキストは変更されますが、ボタンのクリックは機能しません。
これはセキュリティ機能でしょうか?現在、両方のページが同じページにあります。
うーん、手がかりはありますか?
ありがとう
編集-ボタンを手動でクリックすると、グリッドが変更されます(ボタンイベントハンドラー内)。それでも、jqueryはボタンのイベントハンドラーで実行されていないようで、グリッドは変更されません。
親ページのhtml
<asp:GridView ID="gv" runat="server" />
<asp:Button ID="btnRefresh" runat="server" />
<a id="popoutUsers" href="popup.aspx?page=Bob" class="OpenNewLink">CLICK ME</a>
<script type="text/javascript">
$(function () {
$('.OpenNewLink').click(function () {
var url = $(this).attr('href');
var dialog = $('<div id="modal"></div>').appendTo('body')
$('<iframe id="site" src="' + url + '" />').dialog({
modal: true
, close: function (event, ui) {
// remove div with all data and events
dialog.remove();
}
});
return false;
});
showThanks = function () {
alert("Thanks");
var button = $("#btnRefresh");
button.val("hello"); //This works
button.click(); //Nothing seems to happen
// button.trigger("click"); (Tried trigger as well but no luck)
};
});
</script>
子ページ
<div>
Why hello there
<asp:Button ID="btnBob" runat="server" Text="click me" />
</div>
<script type="text/javascript">
$(function () {
$('#btnBob').click(function (e) {
e.preventDefault();
window.parent.showThanks();
window.parent.$('.ui-dialog-content').filter(function () { return $(this).dialog('isOpen'); }).dialog('close');
return false;
});
});
</script>