2012-08-03 177 views
1

每當我第二次點擊'#print'按鈕時,第一次點擊的值就會在真實值之前打印出來。變量保留舊值

例如: 我第一次點擊按鈕。警告框打印出正確的值('test1')。

我第二次單擊按鈕。警告框打印出第一個值('test1'),然後按OK,然後在警告框中打印出第二個值('test2')。

任何想法我做錯了什麼?

$(".ipdate").focus(function() { 

    /*$('.dateBox').hide();*/ 

    var tit = $(this).attr('id'); 
    /*var full = '#'+tit+'B';*/ 

    $('#dateBox').show(); 

    $('#print').on('click', function(){ 

     var bottle = $('.sday').val()+' '+$('.smon').val()+' '+$('.syear').val(); 
     $('#'+tit).val(bottle); 
     alert(tit); 

    }); 

    $('#close').on('click',function() { 

     $('#dateBox').hide(); 

    });  
}); 

回答

5

您正在註冊多個事件,這就是爲什麼你看到多個操作!你看到了嗎? :)我有類似的情況,我花了一段時間才挑選出來。在發佈新事件之前,您可以取消註冊舊事件。

$(".ipdate").focus(function() { 

     /*$('.dateBox').hide();*/ 

     var tit = $(this).attr('id'); 
     /*var full = '#'+tit+'B';*/ 

     $('#dateBox').show(); 

     $('#print').off('click'); 
     $('#print').on('click', function(){ 

      var bottle = $('.sday').val()+' '+$('.smon').val()+' '+$('.syear').val(); 
      $('#'+tit).val(bottle); 
      alert(tit); 

     }); 

     $('#close').off('click'); 
     $('#close').on('click',function() { 

      $('#dateBox').hide(); 

     }); 



    }); 

這應該解決您的問題。使用off將取消註冊舊事件。

+0

哦,真棒,非常感謝你:)我可能永遠不會說出來:D – John 2012-08-03 21:28:33

+2

@約翰 - 當發生在我身上它花了很長時間才發現哈哈,這很痛苦:) – 2012-08-03 21:29:14

+0

嘿嘿,是啊,我可以想象:D – John 2012-08-03 21:30:59