2012-02-29 70 views
0

當用戶點擊選擇框時,我想通過在選擇框上點擊模糊事件來隱藏選項菜單。以下代碼適用於Firefox,但不適用於Chrome。模糊關閉選擇框不適用於鉻?

<select id="myselect" name="city"> 
       <option value="default" id="first">Default value</option> 
      </select> 



     <script type="text/javascript"> 

      $('#myselect').click(function(){ 
       $(this).blur(); 

      }); 

     </script> 

在鉻選項菜單保持原樣。

+0

所以你想關閉用戶剛剛打開的下拉列表? – Tx3 2012-02-29 12:52:30

+0

@ Tx3是的,先生... – 2012-02-29 12:57:23

+0

只是好奇,爲什麼你不只是禁用它? – Tx3 2012-02-29 13:12:53

回答

0

這是我對我的問題

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
     if(is_chrome) $(".option").hide(); 

其中類「選項」代表選擇框中的所有選項的黑客。

0

我懷疑這與用戶模式狀態有關(儘管我找不到任何文檔來支持它,我可能會添加)。我懷疑任何事件偵聽器都會被忽略,直到用戶從選項中進行選擇。

爲了支持這一點,你可以看到,$(this).blur()火災時,我們把它掛到onchange事件<select>的準確預期: http://jsfiddle.net/TkfPN/

這將是更好的選擇簡單地禁用<select>元素。模糊聚焦元素是非常糟糕的人機交互和令人沮喪的用戶。

0

我找到了解決方案。只需刪除選擇框的節點,然後將其添加回來!確保你使用委託事件處理程序。似乎適用於所有瀏覽器。這裏是我在jQuery中的解決方案,但如果有人想寫一個純粹的JS解決方案,那也會很好。

jQuery('.sortSelect').appendTo('.sortParent'); 

如果不是appearant,在這個例子中,標記工作,如果sortSelect是sortParent的最後一個直接子。 $ .insertAfter()/ $。insertBefore()也可以。