2013-08-16 60 views
0

我使用下面顯示的代碼創建確認框,當從<select>對話框中選擇特定選項時。當選擇「bar」選項時,我可以很好地得到確認對話框。但是,如果我取消了它,選定的選項將變爲空白。如果我先選擇另一個選項,然後選擇「bar」並取消,它將返回到先前選擇的選項(這是所需的行爲)。爲什麼第一次取消失敗,而後來的取消不會呢?確認選擇不按預期與jQuery 10.1一起工作

<html> 
    <head> 
     <title>Test of jQuery confirm select</title> 
     <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       $('#example').change(function() { 
        var selected = $(this).val(); 

        if (selected == 'bar') { 
         if (!confirm('Are you sure?')) { 
          $(this).val($.data(this, 'current')); // added parenthesis (edit) 
          return false; 
         }  
        } 
        $.data(this, 'current', $(this).val()); 
       }); 
      }); 
     </script> 
    </head> 
     <select id="example"> 
      <option value="none" selected="selected">--Select an Option--</option> 
      <option value="foo">foo</option> 
      <option value="bar">bar</option> 
      <option value="que">que</option> 
     </select> 
    <body> 
    </body> 
</html> 

jsFiddle demo

只是爲了要清楚,如果我去,從這種情況不會發生任何其他選項「欄」。但是,如果「bar」是我選擇的第一個選項,它總是會發生。

回答

1

這是因爲current沒有設置在這個函數的第一次運行。

插入你的第一if語句之前如下:

if($.data(this, 'current') == null) $.data(this, 'current', 'none');  

jsFiddle

+0

謝謝!這回答了我的問題。 – Frederic

相關問題