2011-02-17 264 views
4

我有一些表格,其中包含一些選擇列表,當某些值被選中時將顯示/隱藏更多輸入字段。當選擇列表值更改而不發生更改時,jquery捕獲事件

問題是,大多數用戶是數據錄入的人,所以他們在輸入數據時大量使用鍵盤,並且選擇列表的change事件僅當焦點通過鍵盤完成時離開輸入時纔會觸發。我試過爲keypress和​​添加相同的功能,而且這些功能很好,但在IE中沒有。

不幸的是,我的用戶大多是國家工作人員,所以他們被迫使用IE瀏覽器,有誰知道一種解決方法?

這裏是我的代碼:

$("div.error_editor select.refReason").live({ 
    'change': function() { 
     var text = $(this).find(":selected").text(); 
     $(this).parent().siblings("span").toggle(); 
    }, 
    'keypress': function() { 
     $(this).change(); 
    } 
}); 

編輯:看來這也是Chrome瀏覽器無法正常工作,但在Firefox正常工作

+1

+1的問題,我都沒法實現這種限制存在的`change`事件。 – 2011-02-17 21:22:32

回答

4

我發現,在IE和Chrome有效的解決方案,我改變keypresskeyup

$("div.error_editor select.refReason").live({ 
    'change': function() { 
     var text = $(this).find(":selected").text(); 
     $(this).parent().siblings("span").toggle(); 
    }, 
    'keyup': function() { 
     $(this).change(); 
    } 
}); 
0

您是否嘗試過的keydown事件附加到文件,而不是選擇?

$("div.error_editor select.refReason").live({ 
    "focus": function() { 
     var $select = $(this); 

     // Use event namespacing for clean removal 
     $(document).bind("keypress.selectmenu", function() { 
      $select.change(); 
     }); 
    }, 
    "blur": function() { 
     $(document).unbind("keypress.selectmenu"); 
    } 
}); 
+0

雖然在IE中不起作用, – Jimmy 2011-02-17 21:26:31

相關問題