私はウェブサイトを構築しており、プロジェクトの一部として 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 は日付ピッカーを実行せず、直後に来るコードを選択します。なぜ単純なアラートがそのような影響を与えるのでしょうか?