使用keyup和keydown进行fire .change

时间:2011-06-03 13:41:11

标签: javascript jquery

我有以下工作,只要我使用鼠标从选择框中选择一个选项,或使用键盘方向键选择选项,但使用键盘时,更改事件不会触发,直到我按Enter键在键盘上。

如何使用键盘箭头键检测更改而无需按Enter键?

$('#select_box').change(function() {
    some_function($(this).val());
});

3 个答案:

答案 0 :(得分:4)

您可能希望避免不必要地多次调用您的函数,如果您不小心多个事件,就会发生这种情况。您可以通过在调用之前检查字段的值是否已实际更改来避免这种情况。下面显示的一种方法是使用前一个值在字段上存储属性,然后使用它来检查字段的值是否已更改,然后再调用函数:

var previousValuePropertyKey = 'previousValue';

$('#select_box').bind('keyup change', function(event) {
    var previousValue = $(this).prop(previousValuePropertyKey);
    var currentValue = $(this).val();
    $(this).prop(previousValuePropertyKey, currentValue );

    if(previousValue != currentValue ){
        alert(currentValue);//TODO remove alert
        //Yourfunction(..);
    }
});

Here是一个例子的小提琴。

答案 1 :(得分:1)

TRY

$('#select_box').bind('keyup change',function() {
    some_function($(this).val());
});

Reference

答案 2 :(得分:0)

$('#select_box').change(function() {
    alert($(this).val());
});

$('#select_box').keyup(function() {
    alert($(this).val());
});