-2

この問題は私を怒らせています。

だから私はモーダルダイアログを持っています。

<div class="modal">
    <img src="...."/>
</div>

このようにインスタンス化:

$(".modal").dialog({
        resizable: false,
        draggable: false,
        modal: true,
        autoOpen: false,
        width: 530,
        height: 460,
        closeOnEscape: false,
        dialogClass: 'popup noTitle'
    });

それから私はフォームを持っています:

<form>

    <input type="submit"/>
</form>

Js でモーダルを開きます。

$('form input').click(function() {
    $(".modal").dialog('open');
});

ほとんどのブラウザでは、これはうまく機能します:

ここに画像の説明を入力

IE 9 および IE 10 では、モーダルは開いていますが、画像がありません: ここに画像の説明を入力

フォームの送信に関係しており、画像の読み込みが停止していると思います。$(".modal").dialog('open');コンソールから実行すると、正常に動作します。画像をプリロードしてみました:

$("#divSearching img").each(function() {
        var imgObj = new Image();
        imgObj.src = $(this).attr('src');
    });

役に立ちません。これに問題がある人、または良い解決策を持っている人はいますか? 私が試したことはすべて失敗しました。

フィドルを作成しようとしましたが、フォーム送信に関連しているためできませんでした。

4

2 に答える 2

2

フォームの送信をキャンセルしてみてください:

$('form input').click(function() {
    $(".modal").dialog('open');
    return false;
});

現在、送信ボタンのあるフォームがあり、誰かが送信ボタンをクリックすると、このフォームがサーバーに送信され、ブラウザーは現在の場所からリダイレクトされます。その段階でこれ以上 JavaScript を実行し続けることは期待できません。送信ハンドラから false を返すことで、デフォルト アクションをキャンセルしています。

于 2013-06-07T11:07:02.337 に答える
1

解決策を考え出しました。だから私は変更しました:

$('form input').click(function() {
    $(".modal").dialog('open');
});

に:

$('form input').click(function(e) {
        var $form = $(this).parents('form');
        $(".modal").on('dialogopen', function() {$form.submit();});
        $(".modal").dialog('open');
        e.preventDefault();
    });

これにより、ダイアログを開くための js が完了するまで、フォームの送信が延期されます。私が言ったように。IE9 と IE10 のみの問題のようです。FireFox、Chrome などはこれで問題なく動作します。

于 2013-06-07T11:26:17.643 に答える