我原以为如果禁用一个div,所有内容也会被禁用。
然而,内容变灰了,但我仍然可以与它交互。
有没有办法做到这一点?(禁用div并使所有内容也被禁用)
我原以为如果禁用一个div,所有内容也会被禁用。
然而,内容变灰了,但我仍然可以与它交互。
有没有办法做到这一点?(禁用div并使所有内容也被禁用)
$.fn.disable = function() {
return this.each(function() {
if (typeof this.disabled != "undefined") {
$(this).data('jquery.disabled', this.disabled);
this.disabled = true;
}
});
};
$.fn.enable = function() {
return this.each(function() {
if (typeof this.disabled != "undefined") {
this.disabled = $(this).data('jquery.disabled');
}
});
};
存储元素原始的“disabled”属性。
$('#myDiv *').disable();
如果要禁用指针事件,这很容易处理
document.getElementById("appliedDatepicker").style.pointerEvents = "none";
或者
如果你想启用,
document.getElementById("appliedDatepicker").style.pointerEvents = "auto";
$("#yourdivid textarea, #yourdivid input, #yourdivid select").attr('disabled',true);
这个仅使用CSS / noscript的解决方案在字段集(或div或任何其他元素)上方添加一个覆盖层,防止交互:
fieldset { position: relative; }
fieldset[disabled]::after { content: ''; display: inline-block; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: all; background: rgba(128,128,128,0.2); }
[disabled] { pointer-events: none; }
Chrome
如果你只是想阻止人们点击,而不是非常担心安全问题 - 我发现一个绝对定位的 div,z-index 为 99999 可以很好地解决这个问题。你无法点击或访问任何内容,因为 div 覆盖在上面。这可能会更简单,并且是一种仅使用 CSS 的解决方案,直到你需要将其移除。
另一种方式是在jQuery中获取包含DIV的内部高度、宽度和定位,然后简单地覆盖另一个DIV,透明,大小相同。这将适用于容器内所有元素,而不仅仅是输入框。
但请记住,如果JS被禁用,您仍将能够使用DIV的输入框/内容。上述答案也是如此。
$myForm.find('#fieldsetUserInfo input:disabled').prop("disabled", false);
fieldsetUserInfo
是一个包含所有我想要禁用或启用的输入框的 div。
希望这可以帮到你。
编辑:
下面我使用了.on()
方法,请改用.bind()
方法
$(this).bind('click', false);
$(this).bind('contextmenu', false);
要删除您的设置,可以使用.unbind()
方法。而.off()
方法不起作用。
$(this).unbind('click', false);
$(this).unbind('contextmenu', false);
经过研究数百种解决方案!学习了有关指针事件的知识,以下是我所做的。
正如@Kokodoko在他的解决方案中提到的那样,这适用于除IE之外的所有浏览器。 pointer-events
在IE11中有效,而在较低版本中无效。 我还注意到,在IE11中,指针事件不适用于子元素。 因此,如果我们有像下面这样的东西
<a href="www.preshmalinetpereira.wordpress.com"><i class="car icon"></i><span>My Blog</span></a>
其中 span -是子元素,设置 pointer-events: none
无效。
为了克服这个问题,我编写了一个函数,可以在 IE 中充当 pointer-events,并且可以在较低版本中工作。
在 JS 文件中
DisablePointerEvents(".DisablePointerEvents");
function DisablePointerEvents(classId) {
$(classId).each(function () {
$(this).on('click', false );
$(this).on('contextmenu', false );
});
}
CSS 文件中
.DisablePointerEvents{
pointer-events: none;
opacity: 0.7;
cursor: default;
}
在HTML中
<a href="www.preshmalinetpereira.wordpress.com" class="DisablePointerEvents"><i class="car icon"></i><span>My Blog</span></a>
这是一个关于编程的内容,描述了在子元素出现上述条件时,pointer-events
无法正常工作的情况。
JS Fiddle示例链接:
有可配置的 JavaScript 库,可以接受 HTML 字符串或 DOM 元素,并剥离不需要的标签和属性。这些称为HTML 清理器。例如:
例如,在 DOMPurify 中:
DOMPurify.sanitize('<div>abc<iframe//src=jAva	script:alert(3)>def</div>');
// becomes <div>abcdef</div>