键盘滚动时不触发Jquery列表框更改事件

Cyr*_*pta 16 javascript jquery javascript-events

我在HTML表单上有一个简单的Listbox和这个非常基本的jQuery代码

    //Toggle visibility of selected item
    $("#selCategory").change(function() {
        $(".prashQs").addClass("hide");
        var cat = $("#selCategory :selected").attr("id");
        cat = cat.substr(1);
        $("#d" + cat).removeClass("hide");
    });
Run Code Online (Sandbox Code Playgroud)

当使用鼠标选择当前项目时,更改事件会激活,但是当我使用键盘滚动项目时,事件不会被触发,我的代码永远不会执行.

这种行为有原因吗?什么是解决方法?

Jus*_*son 21

onchange在元素失去焦点之前,通常不会触发该事件.你也想用onkeypress.也许是这样的:

var changeHandler = function() {
    $(".prashQs").addClass("hide");
    var cat = $("#selCategory :selected").attr("id");
    cat = cat.substr(1);
    $("#d" + cat).removeClass("hide");
}

$("#selCategory").change(changeHandler).keypress(changeHandler);
Run Code Online (Sandbox Code Playgroud)

您将需要两者onchangeonkeypress分别考虑鼠标和键盘交互.