Javascript如何禁用长按表?

时间:2017-09-08 16:56:29

标签: javascript jquery

我正在使用最后一行4个按钮的数据表......当我点击第二个按钮时我需要获得正常的click()事件,当我按下长按(比如1秒)我需要点击长按() event ...使用这段代码工作得很好,但是当我开始点击表格时,它会触发长点击()事件,这样我怎样才能启用click()和长按()evenet only on button:

<button type="button" id="row-restart" class="btn btn-success row-restart" title="Restart"><i class="fa fa-cogs-refresh fa-2x"></i></button>

添加于:

table#basicDataTable -> tbody -> tr#15 -> td -> button#row-restart

/ * RESTART - 服务器行长按* /         var pressTimer;

    $('#basicDataTable').on('mouseup', 'button#row-restart', function(e) {
        /* DEFAULT - disable event */
        e.preventDefault();
        /* CLEAR - timeout */
        clearTimeout(pressTimer);
        return false;
    }).mousedown(function(e){
        /* DEFAULT - disable event */
        e.preventDefault();
        window.type = 1;
        /* SET - timeout */
        pressTimer = window.setTimeout(function() { window.type = 2; $('#basicDataTable button#row-restart').click(); }, 1000);
        return false; 
    });

这是click()事件,工作正常:

 $('#basicDataTable').on('click', 'button.btn.btn-ban.ban.row-test', function(e) {
        var message;
        /* DEFAULT - disable event */
        e.preventDefault();

        /* my custom code */
});

所以我需要在1秒后点击并长按按钮,但点击表格元素时不得点击并点击。

我想弄清楚2天,但我无法找到我犯错的地方

1 个答案:

答案 0 :(得分:0)

我通过在论坛上找到代码来修复它,现在它不会仅在表格中的按钮上触发表格元素...就像它应该这样:

    //from e-OS menu script
var longpress = 1000;
var start;
var timer;

//short press - show e-OS system menu
//long press - show e-OS settings
$('#basicDataTable').on( 'mousedown', 'button#row-restart', function(e) {
    window.type = 1;
    start = new Date().getTime();
    timer = setTimeout(function(){ window.type = 2; $('#basicDataTable button#row-restart').click(); },1000)
}).on( 'mouseleave', function( e ) {
    start = 0;
    clearTimeout(timer);
}).on( 'mouseup', function( e ) {
    if ( new Date().getTime() < ( start + longpress )  ) {
       clearTimeout(timer);
       console.log('short press!');   
    }
});