在设置关键帧时冻结其他关键帧事件



下面的代码"正常"工作,只有一个问题。每当keyup事件被触发时,目标键仍然保持对任何keyup或keydown事件的响应,而所有其他键都变为无响应。我好像错过了一些解除绑定的东西,但我想不通。我尝试过off()unbind(),但没有成功。

其目的是,如果按下这些键,它们将触发,但所有其他键不应冻结。

var delta = 500; // time interval since the last keyup event
var lastKeypressTime = 0; // double enter flag set    
$( this ).on( "keyup", function (event) {
event.preventDefault();
    if (event.keyCode == 37)
    {
        $(' a.left' ).css( "opacity", "0.5" ).trigger( 'click' );
    } else if (event.keyCode == 39)
    {
        $(' a.right' ).css( "opacity", "0.5" ).trigger( 'click' );
    }
    else if (event.keyCode == 13)
    {
        var thisKeypressTime = new Date();
        $( ' div div.active a.readon' ).focus();
        if (thisKeypressTime - lastKeypressTime <= delta)
        {
            $(' div div.active a.readon' )[0].click();
            thisKeypressTime = 0;
        }
        lastKeypressTime = thisKeypressTime;
    }
} );

因此,通过将event.preventDefault();从条件之前移动到键内部,发现了导致不需要的行为的问题,默认情况下应该防止。

var delta = 500; // time interval since the last keyup event
var lastKeypressTime = 0; // double enter flag set    
$( this ).on( "keyup", function (event) {
    if (event.keyCode == 37)
    {
        event.preventDefault();
        $(' a.left' ).css( "opacity", "0.5" ).trigger( 'click' );
    } else if (event.keyCode == 39)
    {
        event.preventDefault();
        $(' a.right' ).css( "opacity", "0.5" ).trigger( 'click' );
    }
    else if (event.keyCode == 13)
    {
        var thisKeypressTime = new Date();
        $( ' div div.active a.readon' ).focus();
        if (thisKeypressTime - lastKeypressTime <= delta)
        {
            $(' div div.active a.readon' )[0].click();
            thisKeypressTime = 0;
        }
        lastKeypressTime = thisKeypressTime;
    }
} );

相关内容

  • 没有找到相关文章

最新更新