(iframeを使用して)jQueryダイアログ内に写真をアップロードするための次のコードを実装しました。
ここにiFrameがあります
<div style="display: none">
<iframe id="upload-form" frameborder="0" marginheight="0" marginwidth="0" src="Upload.aspx"></iframe>
</div>
そして、これがjQueryコードですダイアログを開く処理を行う親ページです。
$("#upload-image").click(function (e) {
e.preventDefault();
$('#upload-form').dialog({
modal: true,
width: 300,
title: "Upload Image",
autoOpen: true,
close: function(event, ui) { $(this).dialog('close') }
});
});
次に、アップロードが成功した後にスクリプトを(iframeページに)挿入します。これにより、結果が親ページに返されますが、同時にダイアログを閉じたいと思います。
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
$(parent.document).find('#upload-form').dialog('close');
});
#imagePathValue
は正常に渡されましたが、ダイアログを閉じることができないようです。
何かアイデアはありますか?
これを機能させるには、iframe内からではなく、親からjQueryを呼び出す必要があります。これを行うには、以下を使用します...
window.parent.jQuery('#upload-form').dialog('close');
それでうまくいくはずです!
これを試して:
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
window.parent.$('#upload-form').dialog('close');
});
それに加えて、これも行う必要があります。
window.parent.$('#upload-form').remove();
そのため、ダイアログを閉じるとiframeインスタンスが削除されます。
したがって、最終的なコードは次のようになります。
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
window.parent.$('#upload-form').dialog('close');
window.parent.$('#upload-form').remove();
});
ありがとうKaushal