Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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的HTML表_Javascript_Html_Html Table_Opacitymask - Fatal编程技术网

&引用;“禁用”;带有Javascript的HTML表

&引用;“禁用”;带有Javascript的HTML表,javascript,html,html-table,opacitymask,Javascript,Html,Html Table,Opacitymask,我最近在很多网站上都看到过这种情况,但似乎找不到一个。基本上,我想在单击按钮时“禁用”整个面板(在HTML表的表单中) 通过禁用,我的意思是我不希望表中的表单元素可用,我希望表有点淡出 我已经能够通过在桌子上放置一个“面纱”来实现这一点,上面有一个绝对定位的div,它有一个低透明度的白色背景(这样你可以看到它后面的桌子,但是不能点击任何东西,因为div在它前面)。这也增加了我想要的褪色效果。然而,当我将面纱的高度设置为100%时,它只与我的屏幕大小有关(不包括滚动),因此如果用户向上或向下滚动,

我最近在很多网站上都看到过这种情况,但似乎找不到一个。基本上,我想在单击按钮时“禁用”整个面板(在HTML表的表单中)

通过禁用,我的意思是我不希望表中的表单元素可用,我希望表有点淡出

我已经能够通过在桌子上放置一个“面纱”来实现这一点,上面有一个绝对定位的div,它有一个低透明度的白色背景(这样你可以看到它后面的桌子,但是不能点击任何东西,因为div在它前面)。这也增加了我想要的褪色效果。然而,当我将面纱的高度设置为100%时,它只与我的屏幕大小有关(不包括滚动),因此如果用户向上或向下滚动,他们会看到面纱的边缘,这并不漂亮


我假设这通常是以不同的方式完成的。有谁有更好的方法来实现这一点的建议吗?

如果我错了,请有人纠正我,但我见过Javascript和一些派生Javascript库,它们有很多选项来实现您想要做的事情。我使用jQuery库做了一些类似的效果

需要考虑的一件事是,你到底想禁用什么。从本质上讲,表不是交互式的,因此禁用表不会有多大效果。如果是表中要禁用的表单元素。您可以使用JavaScript实现这一点

除了使用JavaScript禁用表单元素外,还可以使用它更改非交互元素的属性


这方面的一个例子是使用JavaScript更改表格中字体、边框和其他非交互元素的颜色,以提供被禁用的“外观”。当然,您仍然需要使用JavaScript来禁用表单元素。

您不能使用JavaScript以像素为单位计算区域的高度吗?然后把面纱的高度设成那个数字


我脑子里没有确切的代码,但offsetHeight可能会做到这一点

你可以尝试javascript,比如:

function disable(table_id)
{
    var inputs=document.getElementById(table_id).getElementsByTagName('input');
    for(var i=0; i<inputs.length; ++i)
        inputs[i].disabled=true;
}
功能禁用(表id)
{
var inputs=document.getElementById(表id).getElementsByTagName('input');

对于(var i=0;i请使用Jquery尝试下面的方法

$("#freez").click(function(){
    $('#tbl1').find('input, textarea, button, select').attr('disabled','disabled');
});
$("#unfreez").click(function(){
    $('#tbl1').find('input, textarea, button, select').removeAttr("disabled");
});

也可以使用CSS样式禁用HTML表的内部元素,如下所示:

table[disabled], table[disabled] input { pointer-events: none }
在JavaScript代码逻辑中的任何所需点,我们都可以向父表添加
disabled
属性,如下所示,这将使CSS样式生效:

let gameTable = document.getElementById('gameBoard');
gameTable.setAttribute('disabled', true);

另一种方法是使用“不透明度”属性

function disablePanel(id) {
   var panel = document.getElementById(id);
   var inputs = panel.querySelectorAll('input, button'); //anything else can go in here
   for (var i=0; i<inputs.length; i++) {
      inputs[i].disabled = true;
   }

   panel.style.opacity = 0.3; //or any other value
}
功能禁用面板(id){
var panel=document.getElementById(id);
var inputs=panel.queryselectoral('input,button');//这里可以输入任何其他内容

对于(var i=0;iI最终找到了文档的高度,并用它来将面纱覆盖整个页面,而不是仅使用100%:document.documentElement.clientHeight;您实际上缺少了
按钮
选择
文本区域
s。这些可能也需要禁用。您可以不使用长列表使用
:输入
。会有一些性能损失,但不会太多。可能……这应该是答案。