Подтвердить что ты не робот

Как полностью отключить любую МЫШЬ

После того, как пользователь нажмет кнопку "войти в систему" ​​и другие события, я сделал загрузку script, чтобы пользователи знали, что они должны ждать (пока аякс не ответит назад).

Как отключить любые МЫШИ КЛИКИ (щелчок правой кнопкой мыши, щелчок левой кнопкой мыши, двойной щелчок, средний клик, x щелчок), на div id="doc"?

Я хочу добавить этот код в loading.js


HTML

<html>
...
<body>
<div id="doc">
   <div id="content">
   ...
   <input type="button" value="Login" id="login" />
   ...
   </div id="content">
</div id="doc">
</body>
</html>



loading.js

function load_bar(x)
{
    if (x==0)
    {
    $(document.body).css( {"cursor": "default"} );
    $("body").css( {"cursor": "default"} );
    $("#loading").css("visibility", "hidden"); //modal window
//  $("#doc").....ENABLE all clicks (left/right/etc)
    }

    else if (x==1)
    {
    $(document.body).css( {"cursor": "wait"} );
    $("body").css( {"cursor": "wait"} );
    $("#loading").css( {"visibility": "visible"} ); //modal window
//  $("#doc").....DISABLE all clicks (left/right/etc)
    }

    else
    {
    return alert("Wrong argument!");
    }
}



JQuery

$(document).ready(function()
{
//AJAX
$("#login").click(function()
{
    load_bar(1); //DISABLE clicks and show load_bar
    $(":input").attr("disabled", true);


$.post( 
    ...
    function(data)
    {
    ...
    load_bar(0); //ENABLE clicks and hide load_bar
    ...
    } //END: if:else
}); //END:$.post
    ...
}); //END:ajax
}); //END:jQuery
4b9b3361

Ответ 1

Вы можете наложить большой, полупрозрачный <div>, который принимает все клики. Просто добавьте новый <div> в <body> с помощью этого стиля:

.overlay {
    background-color: rgba(1, 1, 1, 0.7);
    bottom: 0;
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
}

Ответ 2

Вы можете добавить простое правило css3 в тело или в конкретный div, используйте "pointer-events: none"; свойство.

Ответ 3

Чтобы отключить все щелчки мыши

var event = $(document).click(function(e) {
    e.stopPropagation();
    e.preventDefault();
    e.stopImmediatePropagation();
    return false;
});

// disable right click
$(document).bind('contextmenu', function(e) {
    e.stopPropagation();
    e.preventDefault();
    e.stopImmediatePropagation();
    return false;
});

чтобы включить его снова:

$(document).unbind('click');
$(document).unbind('contextmenu');

Ответ 4

что-то вроде:

    $('#doc').click(function(e){
       e.preventDefault()
       e.stopImmediatePropagation() //charles ma is right about that, but stopPropagation isn't also needed
});

должен выполнять работу вы также можете связать больше событий мыши с заменой для: изменить: добавьте это в слабую часть

    $('#doc').bind('click mousedown dblclick',function(e){
       e.preventDefault()
       e.stopImmediatePropagation()
});

и это при размораживании:

  $('#doc').unbind();

Ответ 5

Самый простой способ заморозить пользовательский интерфейс - сделать синхронный вызов AJAX.

Обычно синхронные вызовы AJAX преследуют цель использования AJAX, потому что он замораживает пользовательский интерфейс, но если вы хотите, чтобы пользователь не взаимодействовал с пользовательским интерфейсом, сделайте это.