我有一个带有一些选择列表的表单,当选择了某些值时,它会显示/隐藏更多输入字段。
问题在于大多数用户都是数据输入人员,所以他们在输入数据时大量使用键盘,而选择列表的change
事件仅在焦点通过键盘离开输入时触发。我尝试将相同的功能添加到keypress
和keydown
,这些功能很棒,但不适用于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中运行良好
答案 0 :(得分:4)
我找到了适用于IE和Chrome的解决方案,我将keypress
更改为keyup
$("div.error_editor select.refReason").live({
'change': function() {
var text = $(this).find(":selected").text();
$(this).parent().siblings("span").toggle();
},
'keyup': function() {
$(this).change();
}
});
答案 1 :(得分:0)
您是否尝试将keydown事件附加到文档而不是select?
$("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");
}
});