javascript - 变量保留旧值

标签 javascript jquery

每当我第二次单击“#print”按钮时,第一次单击的值会先于实际值打印出来。

例如: 我第一次点击按钮。警告框打印出正确的值(“test1”)。

我第二次点击按钮。警告框打印出第一个值(“test1”),然后我按“确定”,紧接着,警告框打印出第二个值(“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(); 

    });    
});

最佳答案

您正在注册多个事件,这就是您看到多个操作的原因!你看到了吗? :) 我有类似的情况,我花了一段时间才把它们挑出来。您可以在发布新事件之前取消注册旧事件。

   $(".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 将注销旧事件。

关于javascript - 变量保留旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11803421/

相关文章:

javascript - 如何检查焦点是否离开一组元素

javascript - Fabric.js 路径数组有大小限制吗?

javascript - 检查选择字段和输入字段

javascript - 如何运行jquery中数组元素的子函数

javascript - 当用户将鼠标悬停在另一个元素上时无法显示弹出元素

javascript - Jquery仅切换单击的div下的p标签

javascript - 如何更改 JQuery Masonry 中的列数?

javascript - 一种在另一个 CSS 值更改时更改 CSS 值的方法?

jquery - 如何直接从 LocalStorage 创建并运行 html 页面?

javascript - Raphael/Mapael - 由单一图例控制的地 block 和区域