当选择列表值更改而没有更改事件时,Jquery捕获

时间:2011-02-17 21:19:00

标签: jquery

我有一个带有一些选择列表的表单,当选择了某些值时,它会显示/隐藏更多输入字段。

问题在于大多数用户都是数据输入人员,所以他们在输入数据时大量使用键盘,而选择列表的change事件仅在焦点通过键盘离开输入时触发。我尝试将相同的功能添加到keypresskeydown,这些功能很棒,但不适用于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中运行良好

2 个答案:

答案 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");
    }
});