2011-02-17 110 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

相关问题