如何禁用所有div内容
问题出现的原因是需要禁用一个div中的所有内容,但是现有的解决方法只能禁用input元素,不能禁用其他类型的元素(例如li元素或a元素)。
要解决这个问题,可以使用jQuery的.prop方法来禁用所有元素,而不仅仅是input元素。可以使用以下代码实现禁用和启用div中的所有内容:
function toggleContent() { if ($('#toggleElement').is(':checked')) { $('#idOfTheDIV :input').prop('disabled', true); $('#idOfTheDIV').find('*').prop('disabled', true); } else { $('#idOfTheDIV :input').prop('disabled', false); $('#idOfTheDIV').find('*').prop('disabled', false); } }
这样就可以禁用div中的所有内容,包括input元素以及其他类型的元素。需要注意的是,这种方法可能会影响到div中的其他功能,例如自定义的鼠标事件。如果需要保留这些功能,可以在禁用之前保存它们的状态,并在启用时恢复它们的状态。
希望这个解决方法能够帮助到你!
如何禁用所有div内容
当我们想要禁用一个div及其内容时,很多人只关注表单元素的禁用方法。一个简单的方法是禁用鼠标交互,例如:
$("#mydiv").addClass("disabledbutton");
CSS
.disabledbutton { pointer-events: none; opacity: 0.4; }
此外,还可以通过在脚本中添加以下代码来禁用输入框,确保无法通过键盘进行操作:
$([Parent Container]).find('input').each(function () { $(this).attr('disabled', 'disabled'); });
非常感谢!我也一直在为在FF/Chrome中禁用div而苦恼。这个方法在IE、FF和Chrome中都很好用!
对于正确的答案点赞,你节省了我数小时的工作!眼泪在眼眶中打转,可能陷入了爱河。它也被所有浏览器支持:caniuse.com/#feat=pointer-events
然而,它无法禁止子元素(如div或textarea)的滚动。
虽然我知道现在有点晚了,但是它不支持IE 8、IE 9和IE 10。这里只是提醒大家一下:caniuse.com/#feat=pointer-events
这是一个非常有效的HTML5解决方案,因为div没有任何像enabled属性一样的东西。
这只能禁止鼠标事件,但是控件仍然是启用的。
注意:使用这个解决方案,你无法使用鼠标或触摸设备与元素及其子元素交互,但是你仍然可以使用键盘切换到它。
但是内容仍然可以滚动。
很高兴看到HTML5在2016年仍然比Flash/AS3落后了十年。仍然没有一种统一的方式来实现像AS3 InteractiveObject的mouseEnabled和mouseChildren属性那样的交互控制。CSS的'pointer-events'属性是否也包括其他用户交互事件,比如焦点控制?啊,是的,'focus'管理。另一个AS3绝对优于JavaScript的领域。
我觉得这个解决方案对我不起作用。是浏览器有特殊要求吗?我也不想隐藏元素,而是让屏幕变暗并且无法点击元素。
那使用Tab键呢?能够通过Tab键阻止焦点吗?可能不能。这不是一个解决方案。
pointer-events: none !important
也是有帮助的。在IE11中也可以工作。
虽然通过键盘仍然可以访问。
完全起作用。我还要补充一下,如果将以下代码添加到CSS中,效果可能会更好:
user-select: none;
这样,如果div内有可选择的项,它们将无法被选中。
我可以禁用所有鼠标事件,不仅仅是点击,还包括拖拽吗?
当我双击文本框或产生事件的div时,它不起作用。
对于一个简单而更优雅的解决方案点赞。其他方法,比如在stackoverflow上提到的stackoverflow.com/questions/8423812/...,并不起作用。
对我来说,这不是首选解决方案,因为你仍然可以通过键盘导航。
通过pointer-events:none,元素未被禁用。如果用户从浏览器的开发者控制台中删除pointer-events,他可以轻松地操作你的页面。添加disabled属性实际上会向后传递控件已被禁用的信号。不同的浏览器对待禁用控件的方式是不同的。例如,禁用的控件不会被提交。所以这是一个巨大的安全风险,不应该使用。
在我的情况下,我认为这样做还不错,因为我是在选中特定的单选按钮后使用这个设置。一旦选中了该单选按钮,我禁用的所有控件都是无效的。这只是帮助告诉用户。如果他们真的想通过Tab键切换到控件并在其中输入,他们可以,但是不会有任何作用。
输入框没有被禁用。表单提交可能仍然会出现问题。