在jQuery中,当元素失去焦点时,选择框更改事件将触发

时间:2011-08-05 18:40:25

标签: jquery

jQuery documentation for change()说:

  

对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。

我在不同浏览器的选择框中测试了change(),当控件失去焦点时会触发。这使用户在选择框中更改选项时感觉不到任何事情。

我对此的解决方案是使用click()事件,但我不喜欢它,因为每次单击都会运行该函数,并且用户无法使用键盘来更改选项。

有没有办法让change()像文档所说的那样火上浇油。

3 个答案:

答案 0 :(得分:3)

只有当y使用键盘更改选择中的值时,我才会遇到您遇到的相同行为。我这样解决了:

$('select').bind('keyup change', function(){
    //put your code here
});

您应该使用keyup,以确保在函数

中获取新值

答案 1 :(得分:2)

使用:

.bind('change click keypress', ...)

因为这个事件会被激活多次而不是选择被改变(没有理想的解决方案),你必须检查上次是否有任何改变

// check if changed
if( $(this).data('selection') != $('option:selected', this).val() ) {
    // if so, update hidden data
    (this).data('selection', $('option:selected', this).val());

    ... your code
}

答案 2 :(得分:0)

当您从下拉列表中选择任何其他选项时,

更改事件会触发。你可以发布你的代码吗?确保页面上没有任何js错误。

$('select').change(function(){
  //On change code goes here.
});