2013-10-04 5 views
0

Я создаю сайт и использую Twitter Bootstrap modal.js как часть моего проекта. И, как обычно, IE вызывает некоторые проблемы.IE ненавидит мои события модального окна

У меня есть несколько кнопок, при нажатии каждой из которых вы выбираете другую форму через ajax, заполняет модальную форму и выводит ее. Поскольку они динамически импортируются, мне нужно обновить некоторые поля с помощью дополнительных скриптов (например, jQuery UI datepicker) после того, как модаль будет извлечен. Сразу после вызова ajax не работает, поэтому мне нужно использовать модальные события.

Это работает на хроме:

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

Однако IE делает что-то странное. Для этого мне пришлось привязать слушателя к событию «show» («показанный» не работает) и к документу вместо модального.

Внутри document.ready:

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

После нажатия кнопки:

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

Но вот футболист - это не работает, либо если я добавить alert('hello'); выше .datepicker() , Почему предупреждение что-то меняет? Я не знаю, но потом он также складывается - каждый раз, когда вы нажимаете на одну из кнопок, вы получаете больше предупреждений, то есть в первый раз, когда один сигнал, второй раз два предупреждения и так далее.

Я использую bootstrap 2.2 и IE8 (стандартный режим, есть также мета, чтобы убедиться, что страница отображается как IE8, а не более старая версия). Я понятия не имею, в чем проблема, пожалуйста, помогите!

Update

Так что я сузили его немного. Это не связано с событиями «показанного» или «шоу» или с тем, для чего он привязан. Это намного более странно. Это то, что я в конечном итоге делает:

$('#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 не запускается DatePicker и выбранный код, который приходит сразу же после этого. Почему простое оповещение имеет такое влияние?

+0

Какую версию jQuery вы используете? –

+0

версия 1.9.1 ... – yuvi

+0

Если честно, я думаю, что это состояние гонки, попробуйте добавить задержку, чтобы увидеть, помогает ли она, если это так, цепочки событий с надлежащими обратными вызовами –

ответ

1

Edit: После пересмотра этого, кажется, состояние гонки

Я не реальный ответ на почему это происходит, кроме IE быть боли с различными версиями JQuery и html5 атрибуты ..

Однако я делать помню, была аналогичная проблема несколько месяцев назад, если я не ошибаюсь, добавив следующую строку в HTML головной секции должно помочь.

<!--[if lt IE 9]> 
    <script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
+0

благодарю вас за ответ. Это выглядит очень перспективным! К сожалению, я не смогу проверить это до завтра. Я вернусь и обновлю, действительно надеюсь, что это сработает – yuvi

+0

Так что html5shim действительно не помог, но спасибо в любом случае. Я обновил свой quetion, мне бы это понравилось, если бы вы взглянули и посмотрели, есть ли у вас что-нибудь еще, чтобы внести свой вклад – yuvi

Смежные вопросы