变量保持旧的价值

Joh*_*ohn 1 javascript jquery

每当我第二次单击"#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(); 

    });    
});
Run Code Online (Sandbox Code Playgroud)

Tra*_*s J 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(); 

        });



    });
Run Code Online (Sandbox Code Playgroud)

这应该可以解决您的问题.使用off将取消注册旧事件.