Events jQuery更改事件未从键盘触发?

Events jQuery更改事件未从键盘触发?,events,dom,jquery-selectors,jquery,Events,Dom,Jquery Selectors,Jquery,我有一个下拉列表,当其中的值发生更改时,我想提醒/记录一些内容。当我用鼠标单击下拉列表并选择任何其他值时,将触发更改事件。但是,当焦点位于下拉列表中时,我按下向上和向下箭头,它会更改下拉列表中的值,但不会触发事件,此时会显示警报。 这是密码 <select id="drpDay" name="drpDay" style="background-color: white;"> <option value="1">1</option>

我有一个
下拉列表
,当其中的值发生更改时,我想提醒/记录一些内容。当我用鼠标单击
下拉列表
并选择任何其他值时,将触发更改事件。但是,当焦点位于
下拉列表中时,我按下
向上
向下
箭头,它会更改下拉列表中的值,但不会触发事件,此时会显示警报。 这是密码

<select id="drpDay" name="drpDay" style="background-color: white;">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7" selected="selected">7</option>    
    </select>
</br>
<select id="drpMonth" name="drpMonth" style="background-color: white;">
        <option value="Jan">Jan</option>
        <option value="Feb">Feb</option>
        <option value="Mar">Mar</option>
        <option value="Apr">Apr</option>
        <option value="May">May</option>
        <option value="Jun">Jun</option>
        <option value="Jul">Jul</option>
        <option value="Aug">Aug</option>
        <option value="Sep">Sep</option>
        <option value="Oct">Oct</option>
        <option value="Nov" selected="selected">Nov</option>
        <option value="Dec">Dec</option>    
    </select>
</br>
<label id="lbl" text="" width="auto">adsf</label>
这是小提琴


我想要的是,当选择框中的值更改时,通过按
向上
和/或
向下
箭头触发事件。为什么不启动,如何在键盘上更改时启动?

将其绑定到keyup并按如下方式更改:


更新:仅在发生实际更改时触发。

您可以将
更改
键控
事件组合在一起。如果您的事件处理程序只应在值实际发生更改时才执行其工作,那么您必须向其中添加更多的逻辑(记住旧值、比较、操作等)


你用的是什么浏览器


在my Chrome和IE9中,您提供的小提琴可以很好地与键盘配合使用。

以下内容将确保每当选择更改时,通过键盘或鼠标触发更改事件

var prevValue = null;

$('#drpDay').change(function() {
    console.log('changed');
    prevValue = this.value;
});

$('#drpDay').keyup(function() {
    if(prevValue != this.value) {
        $(this).trigger('change');
    }
});

选中此演示:

您的意思是当列表向下时,您可以按向上键和向下键突出显示要选择的项目。如果是这样,则此时值没有改变,只有当您用鼠标单击或按enter键选择一个项目时,值才会改变。对于jQuery的
on
事件,事件是用空格分隔的,而不是用逗号分隔的。但即使没有任何变化,这场火灾也不会发生吗?i、 e.当用户按下esc键或空格键时,焦点在
$('#drpDate, #drpMonth').on('change keyup',function(event) {
    if($(this).data('last') !== $(this).val()){
        $(this).data('last', $(this).val());            
        $('#lbl').text('For change ' + event.which + ' and you ' + $(event.target).attr('id'));
    }
});
$('#drpDay, #drpMonth').on("change keyup", function(event) {
    //...
});
var prevValue = null;

$('#drpDay').change(function() {
    console.log('changed');
    prevValue = this.value;
});

$('#drpDay').keyup(function() {
    if(prevValue != this.value) {
        $(this).trigger('change');
    }
});