我在一个超文本标记语言表单上有一个简单的列表框和这段非常基本的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");
});
当使用鼠标选择当前项时,change事件激发得很好,但当我使用键盘滚动这些项时,该事件不会激发,并且我的代码永远不会执行。
这种行为是有原因的吗?那么解决方法是什么呢?
发布于 2009-08-06 06:16:48
通常直到元素失去焦点时才会触发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);
您将希望onchange
和onkeypress
分别考虑鼠标和键盘交互。
发布于 2009-08-06 05:53:42
有时,更改行为可能会因浏览器而异,作为一种解决方法,您可以执行以下操作:
//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事件。
即:
var changeMethod = function() { $(this).change(); };
....keypress(changeMethod).click(changeMethod).xxx(changeMethod);
发布于 2010-07-15 08:35:26
我在JQuery 1.4.1下使用IE时遇到了这个问题-如果使用键盘进行更改,组合框上的更改事件将不会触发。
似乎已在JQuery 1.4.2中修复。
https://stackoverflow.com/questions/1237164
复制相似问题