检查更改()触发器时是否更改了值

时间:2011-09-29 08:33:30

标签: javascript jquery

我注意到即使该选项未被更改,也可以为<select>触发change()。

请参阅我的jsfiddle示例。

更改选择将更改显示的文本输入。然而(如果你:

,我知道这有点拉伸)
  • 点击标签Selection:
  • 选择下拉列表
  • 按下键盘(假设选择了Show A
  • 然后用鼠标指针选择Show A,它将触发change()。

这是否有一个简单的解决方法(现在我正在考虑使用变量来跟踪更改后的最后一个选择())?

修改 这似乎是特定于Chrome的问题。通过使用变量来跟踪最后选择的项目,我能够修复问题。我想这是jQuery / Chrome开发人员的一个错误。

1 个答案:

答案 0 :(得分:1)

我会将当前值作为数据存储在元素(而不是变量)上,如下所示:

$('#variable').data('currentval', $('#variable').val()).change(function() {
    var t = $(this);
    if (t.data('currentval') != t.val()) {        
        $(this).data('currentval', $(this).val());
        $('#listA').toggle('fast');
        $('#listB').toggle('fast');
    }
});

http://jsfiddle.net/emMx6/2/