Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何完全禁用任何鼠标单击_Javascript_Jquery_Onclick_Mouseevent - Fatal编程技术网

Javascript 如何完全禁用任何鼠标单击

Javascript 如何完全禁用任何鼠标单击,javascript,jquery,onclick,mouseevent,Javascript,Jquery,Onclick,Mouseevent,在用户点击“登录”按钮和其他事件之后,我制作了一个加载脚本——让用户知道他们必须等待(直到ajax回复) 如何在div id=“doc”上禁用任何鼠标单击(右键单击、左键单击、双击、中键单击、x键单击)? 我想将该代码添加到loading.js HTML <html> ... <body> <div id="doc"> <div id="content"> ... <input type="button" value="

在用户点击“登录”按钮和其他事件之后,我制作了一个加载脚本——让用户知道他们必须等待(直到ajax回复)

如何在
div id=“doc”
上禁用任何鼠标单击(右键单击、左键单击、双击、中键单击、x键单击)

我想将该代码添加到
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>


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

您可以覆盖一个大的半透明的
,它需要所有的点击。只需使用此样式将新的
附加到

.overlay{
背景色:rgba(1,1,1,0.7);
底部:0;
左:0;
位置:固定;
右:0;
排名:0;
}
类似于:

    $('#doc').click(function(e){
       e.preventDefault()
       e.stopImmediatePropagation() //charles ma is right about that, but stopPropagation isn't also needed
});
我应该做这项工作 您还可以使用替换来绑定更多鼠标事件: 编辑: 将此添加到feezing部分

    $('#doc').bind('click mousedown dblclick',function(e){
       e.preventDefault()
       e.stopImmediatePropagation()
});
在解冻过程中:

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

要禁用所有鼠标单击

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');

冻结UI的最简单方法是使AJAX调用同步



通常,同步AJAX调用无法达到使用AJAX的目的,因为它会冻结UI,但如果您想阻止用户与UI交互,请执行此操作。

您可以在正文或特定div中添加简单的css3规则,使用
指针事件:无
属性。

如何将
加载.jpg
$(“#加载”)
)添加到此div(
.overlay
)-屏幕中心处?@Omar:
背景图像:url('loading.jpg');背景重复:无重复;背景位置:中心将是一种方式。另一种方法是添加
文本对齐:居中.overlay
上添加code>,然后在
.overlay
中添加一个新图像(
#加载
),样式为
边距顶部:50%;位置:相对位置;顶部:-(半幅图像的高度)px
。给
加载.jpg
一个顶部,左侧等于
parent.height()/2-load.height()/2
parent.width()/2-load.width()/2
respectively@minitech
背景位置:中间有什么区别吗
文本对齐:居中…
?@minitech它也会自动与窗口的大小调整更改对齐…邪恶!!!这是最后一个提琴(我添加了一些角色定制)+1个好主意:)不过,如果用户沮丧地按了一串键,它们不会在完成后都回来吗?@gilly3我不知道你在说什么:,(我觉得这听起来有些胡言乱语(太高级了)我是一个初学者,你能详细说明一下吗?我不知道你可以禁用整个文档上的点击!我想我不需要不会禁用中间点击的
毕竟=)。此外,在事件从实际元素冒泡出来之后,将调用在文档级别设置的事件处理程序。(您正在调用
stopPropagation()
在它已经传播到顶部之后。)没错,绑定到文档下方元素的JS处理程序仍然会启动,但它确实会停止链接导航和表单提交等html可点击事件。它也不会禁用鼠标中键,我也不知道跨浏览器禁用它的方法。但是OP可能可以通过混合使用我的方法和下面描述的css覆盖来实现他想要的@minitec@charles-妈妈,我想你是对的!混合方法是更好的选择。@charles ma即使有了这段代码,它仍然在点击IE8:@alonisser我正在使用charles ma和minitech解决方案。不幸的是,我这个网站不允许2票>\这个解决方案太棒了,所以easyAlso会禁用所有光标事件,比如更改指针。似乎只推荐用于SVG应用程序。Genius。我已经寻找了几个小时的解决方案——这是迄今为止最实用、最简单的解决方案。
$(document).unbind('click');
$(document).unbind('contextmenu');