2013-05-31 54 views
4

我正在使用jQuery MultiSelect Widget。使用IE時,如果我從基本下拉菜單中選擇3個選項,瀏覽到另一個頁面,然後按下瀏覽器後退按鈕,這些值將保留在下拉列表中。如果我刷新頁面,值仍然保留。強制刷新清除值。jQuery UI MultiSelect Widget選擇保留在IE中但不是Chrome

在Chrome中,如果我做同樣的事情,值不會保留。

通過我的網站(很遺憾不能通過互聯網訪問),在IE8中,複選框的選中狀態似乎保持可見,但複選框的狀態未被選中。

我試着調用'uncheckAll'方法,複選框仍然被選中。我在代碼中添加了一個提示,顯示所選選項的數量,即使選中了複選框,該值也爲零。

多選列表的狀態如何被IE保留,並且可以防止?

+0

您是否在如下所示的多選小部件中禁用了緩存:http://stackoverflow.com/questions/1341089/using-meta-tags-to-turn-off-caching-in-all-browsers ? – lzdt

回答

0

調用multislect插件的unchekAll()方法似乎是最簡單的方法。由於我看不到你的代碼,也許你沒有把它稱爲正確的方式:

$("select").multiselect("uncheckAll"); 

但是現在,在哪裏調用此方法?

對於跨瀏覽器一致性,我認爲正確的方法是使用onbeforeunload處理程序,它是在我意識到的所有瀏覽器中觸發的。所以,這段代碼應該可以在所有情況下工作:

window.onbeforeunload = function(){$("select").multiselect("uncheckAll")}; 

讓我知道這是否解決了您的問題?

+0

這解決了這個問題,但我仍然不知道爲什麼IE是唯一保留這些值的瀏覽器。 – Anthony

+0

如果您使用此鏈接(不嵌套在iframe中):http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/basic.htm您可以看到,IE不僅保留數據。我懷疑你正在將它嵌入到iframe中,因爲widget的演示頁面正在執行它。看起來更像是一個瀏覽器之間的iframe相對不一致,而不是一個插件相對的行爲。需要更多的測試才能確定 –

+0

我剛剛使用了IE8和Chrome中的鏈接,從基本列表中選擇了4個值,然後按下了刷新。 IE8保留「4選定」,Chrome恢復爲「選擇選項」。我沒有在iframe中使用它。 – Anthony

0

嘗試綁定小部件之前解除綁定。在附加之前解除事件附件是一個很好的做法,以避免出現上述任何問題。

嘗試

$("select").unbind(); 

,然後裝上多選。 jquery-unbind()off()全部使用相同的jquery版本。我想你也會在Mozilla中遇到同樣的問題。

相關問題