2011-02-15 63 views
0

我有一个select有一个更改事件,它显示一个确认框。如果用户单击“取消”,那么我将该值更改回以前的值(使用.val())。但是,在IE8中,这是再次触发更改事件,重新启动循环。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()会触发另一个更改事件。这并不是真的,我想:发生的事情是,选择被改回来,没有任何不愉快的事情发生,但是当我点击页面上的其他地方(任何地方)时,再次触发改变事件。

+2

设置一个值就是这样做**不是**在任何浏览器中触发“更改”事件。 [Here](http://jsfiddle.net/zZamx/)是你在jsfiddle中的代码,它在IE8中工作正常。 – Pointy 2011-02-15 15:37:37

回答

0

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