jQuery只使用一个事件忽略其余事件

时间:2014-04-02 21:38:32

标签: jquery

<script type="text/javascript">

    $('#TextBoxConfirmNewEmail').bind('cut copy paste', function (e) {
        e.preventDefault();
        $('#cut_copy_paste').html("Please re-type email address for verification.").fadeIn(1);
        $('#cut_copy_paste').html("Please re-type email address for verification.").delay(3000).fadeOut(1000);
    });

</script>

我确信有一种方法可以简化此代码,但我的问题是这个。它被调用一次它可以工作,但如果我按Ctrl + V,Ctrl + V,Ctrl + V多次。它被执行多次。我试图只抓住一个事件并转储其余事件。

基本上我试图在人物剪切,复制或粘贴时显示消息,然后慢慢让该消息消失。如果此人再次快速按下Ctrl + V,请忽略它,直到消息完全消失。

2 个答案:

答案 0 :(得分:1)

我想像这样做:

$('#TextBoxConfirmNewEmail').bind('cut copy paste', function (e) {
    e.preventDefault();
    var $ccp = $('#cut_copy_paste');
    if($ccp.data('abort')==true)
        return 0;

    $ccp.data('abort',true).html("Please re-type email address for verification.").fadeIn(1).delay(3000).fadeOut(1000, function() { $(this).data('abort',false); });
});

JSFiddle:http://jsfiddle.net/n2UuZ/

答案 1 :(得分:0)

类似的东西:

<script type="text/javascript">
    var runVer = true;
    $('#TextBoxConfirmNewEmail').bind('cut copy paste', function (e) {
        e.preventDefault();
        if (runVer)
        {
            runVer = false;
            $('#cut_copy_paste').html("Please re-type email address for verification.").fadeIn(1);
            $('#cut_copy_paste').html("Please re-type email address for verification.").delay(3000).fadeOut(1000);

            setTimeout(function() {
                runVer = true;
            }, 3000);

        }
    });
</script>