首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jquery列表框更改事件不会在键盘滚动时触发

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

Stack Overflow用户
提问于 2009-08-06 05:50:26
回答 4查看 21.8K关注 0票数 16

我在一个超文本标记语言表单上有一个简单的列表框和这段非常基本的jQuery代码

代码语言:javascript
复制
    //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");
    });

当使用鼠标选择当前项时,change事件激发得很好,但当我使用键盘滚动这些项时,该事件不会激发,并且我的代码永远不会执行。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-06 06:16:48

通常直到元素失去焦点时才会触发onchange事件。您还需要使用onkeypress。可能是这样的:

代码语言:javascript
复制
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);

您将希望onchangeonkeypress分别考虑鼠标和键盘交互。

票数 21
EN

Stack Overflow用户

发布于 2009-08-06 05:53:42

有时,更改行为可能会因浏览器而异,作为一种解决方法,您可以执行以下操作:

代码语言:javascript
复制
 //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");
    }).keypress(function() { $(this).change(); });

您可以链接任何想要的事件,并手动触发change事件。

即:

代码语言:javascript
复制
var changeMethod = function() { $(this).change(); };
....keypress(changeMethod).click(changeMethod).xxx(changeMethod);
票数 4
EN

Stack Overflow用户

发布于 2010-07-15 08:35:26

我在JQuery 1.4.1下使用IE时遇到了这个问题-如果使用键盘进行更改,组合框上的更改事件将不会触发。

似乎已在JQuery 1.4.2中修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1237164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档