2013-10-04 49 views
0

我正在構建一個網站,並使用Twitter Bootstrap modal.js作爲我的項目的一部分。和往常一樣,IE導致一些麻煩。IE討厭我的模態窗口事件

我有幾個按鈕,點擊時每個按鈕都會通過ajax獲取不同的表單,然後用表單填充模式,然後顯示出來。由於它們是動態獲取的,我需要在獲取模式之後使用其他腳本更新一些字段(例如,jQuery UI日期選擇器)。緊接在ajax調用不起作用之後,我需要使用模態事件。

這適用於Chrome:

$('#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()以上。爲什麼警報會改變什麼?我不知道,但隨後也會疊加 - 每次單擊其中一個按鈕時,您將收到更多警報​​,即第一次警報,第二次警報等等。

我使用引導2.2和IE8(標準模式,還有一個元素,以確保頁面呈現爲IE8而不是舊版本)。我不知道這裏有什麼問題,請幫忙!

更新

所以我把範圍縮小一點。這與「展示」或「展示」事件或其綁定內容無關。這是一個很多怪物。這是我落得這樣做:

$('#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不運行自帶隨即的日期選擇器和選擇代碼。 爲什麼簡單的警報會產生這樣的影響?

+0

你使用的是什麼jQuery版本? –

+0

版本1.9.1 ... – yuvi

+0

說實話,我認爲這是一個競爭條件,嘗試添加一個延遲,看看它是否有幫助,如果有的話,用適當的回調鏈接事件 –

回答

1

編輯:複議後,這似乎是一個競爭條件

我沒有對爲什麼這種情況正在發生一個真正的答案,除了IE瀏覽器是一個不同版本的jQuery和疼痛HTML5屬性..

不過,我記得有過類似的問題在幾個月前,如果我沒有記錯的話,添加以下行到您的HTML頭部分應該有很大的幫助。

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

感謝您的回覆,這看起來很有希望!可悲的是我不能在明天之前對它進行測試。我會檢查和更新,真的希望這會起作用 – yuvi

+0

所以html5shim沒有真正幫助,但無論如何感謝。我更新了我的que,,如果你看看你是否還有什麼可以貢獻的話,我會喜歡它 – yuvi