0

私はウェブサイトを構築しており、プロジェクトの一部として Twitter Bootstrap modal.js を使用しています。いつものように、IE が問題を引き起こしています。

私はいくつかのボタンを持っています。クリックすると、それぞれが ajax を介して異なるフォームを取得し、モーダルにフォームを入力して表示します。それらは動的にフェッチされているため、モーダルがフェッチされた後、いくつかのフィールドを追加のスクリプト (jQuery UI datepicker など) で更新する必要があります。ajax 呼び出しが機能しない直後は、モーダル イベントを使用する必要があります。

これはクロムで動作します:

$('#myModal').modal().on('shown', function() {
    $('#id_date').datepicker();
});

ただし、IE は奇妙なことを行います。それを機能させるには、リスナーを「show」イベント(「shown」は機能しません)とモーダルではなくドキュメントにバインドする必要がありました。

document.ready 内:

$(document).on('show', function() {
    $('#id_date').datepicker();
});

ボタンをクリックした後:

$('#myModal').modal('show'); 

しかし、ここにキッカーありalert('hello');ます.datepicker()。アラートが何かを変更するのはなぜですか? わかりませんが、それも積み重なります。ボタンの 1 つをクリックするたびに、より多くのアラートが表示されます。つまり、最初は 1 つのアラート、2 回目は 2 つのアラートなどです。

私はブートストラップ 2.2 と IE8 を使用しています (標準モード、ページが古いバージョンではなく IE8 としてレンダリングされることを確認するためのメタもあります)。ここで何が問題なのかわかりません、助けてください!

アップデート

なので少し絞ってみました。これは、'shown' や 'show' イベント、またはバインドされているものとは関係ありません。それはもっと奇妙です。これは私がやったことです:

$('#myModal').on('shown', function() {
     if (navigator.appName == 'Microsoft Internet Explorer') {
         alert('Hey! you should really use Chrome!');
     }
     $('#id_date').datepicker();
     $('#id_tags').chosen(); 
});


$('#button1').on('click', function() {
     $('#myModal').modal();
});

警告メッセージがなければ、IE は日付ピッカーを実行せず、直後に来るコードを選択します。なぜ単純なアラートがそのような影響を与えるのでしょうか?

4

1 に答える 1

1

編集:再検討した後、これは競合状態のようです

IEがさまざまなjQueryバージョンとhtml5属性に悩まされていることを除けば、これがなぜ起こっているのかについての本当の答えはありません..

ただし、数か月前に同様の問題が発生したことを覚えています。間違いがなければ、次の行を html の head セクションに追加すると、大いに役立つはずです

<!--[if lt IE 9]>
    <script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
于 2013-10-06T13:29:20.503 に答える