jQuery .val()方法在IE8中触发更改事件

时间:2011-02-15 15:35:03

标签: jquery

我有一个选择,其上有一个更改事件,显示一个确认框。如果用户单击“取消”,则我将值更改回之前的值(使用.val())。但是,在IE8中,这会再次触发更改事件,重新启动循环。

必须有一种更简洁的方法将选择设置回它之前的值,而不会触发另一个更改事件,但我想不出来:/任何建议?这就是我现在正在做的事情,这可能是相当笨拙的:

  $("#quiz_style").change(function(){
    var selected = $(this).val(); 
    if(selected == "classic"){
      if (!confirm("confirmation message for changing to classic")) {
          $(this).val('sequential');
          return false;
      }      
    } else if(selected == "sequential"){
      if (!confirm("confirmation message for changing to sequential")) {
          $(this).val('classic');
          return false;
      }       
    }
  });

编辑 - 了解更多信息。我的原帖有点误导,因为它说使用val()会触发另一个更改事件。我认为这并不完全正确:所发生的是选择被更改回来,没有发生任何不幸事件,但是当我点击页面上的其他地方(任何地方)时,会再次触发更改事件。

1 个答案:

答案 0 :(得分:0)

它不应该这样做,它似乎不是:http://jsbin.com/omewa6在IE8(以及IE6,Chrome和Firefox,以及Opera ......)中测试过。你会想在代码中的其他地方查找问题,虽然我不能立即想到如果那个代码是你实际使用的代码会是什么......