1

「#print」ボタンを 2 回クリックすると、最初のクリックの値が実際の値の前に印刷されます。

例: ボタンを初めてクリックします。アラート ボックスに正しい値 ('test1') が出力されます。

ボタンをもう一度クリックします。アラート ボックスに最初の値 ('test1') が出力され、[OK] を押すと、その直後にアラート ボックスに 2 番目の値 ('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(); 

    });    
});
4

1 に答える 1

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すると、古いイベントが登録解除されます。

于 2012-08-03T21:21:38.600 に答える