2012-08-03 156 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