我正在使用jquery和livequery插件监听选择下拉列表的更改事件。
$(".myDropdown").livequery("change", function () {
});
我注意到的一件事(我使用的是firefox)就是那个
当我选择了焦点时,事件处理程序不会触发向上和向下箭头(向上和向下箭头DO更改条目)
为什么当我上下移动箭头键时,更改事件不会触发,是否有推荐或解决方法?
答案 0 :(得分:5)
如果Malvolio说的是真的那么,那应该有效
$(".myDropdown").livequery("change", function () {
// your event handler
}).livequery("keypress", function() {
$(this).trigger("change");
});
答案 1 :(得分:2)
我想我会总结一下。
如果单击选择框中的某个项目,则表示您正在更改该项目。如果您通过键入向下浏览选择框,则只有按Enter键才能选中,单击关闭或标签。我认为这在浏览器与浏览器之间略有不同,但实际上选择发生在类似“我已完全使用此表单字段并立即离开”事件。
如果您希望结果更直接,您可以触发更改事件,如下所示:
$("select").live("keypress",function(){
$(this).trigger("change");
});
如果您希望在所有表单字段中执行此操作,请尝试使用此选择器:$(":input select textarea")
答案 2 :(得分:1)
以下代码(无论如何在Firefox 3.6上)同意OP并且不同意评论者:
$('body').append('<select/>').find('select')
.append('<option>one</option)')
.append('<option>two</option>')
$('body').find('select').keypress(function() {
console.log('keypress: ' + $(this).val()); })
每当您点击箭头键时,更改的值将打印到日志中。
答案 3 :(得分:0)
在元素失去焦点之前,更改事件不会被触发,即使 更改了值(正如Malvolio所证明的那样)。以下代码段将在按下任何键时手动触发更改事件:
$("select").on("keypress",function(){
$(this).trigger("change");
});