Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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 - Fatal编程技术网

Javascript 禁用html中的所有元素

Javascript 禁用html中的所有元素,javascript,html,Javascript,Html,我们如何通过javascript禁用html中的所有元素。最简单的方法…我不知道您为什么需要它,但这会起作用: // this will disable all input elements var elems = document.getElementsByTagName('input'); var len = elems.length; for (var i = 0; i < len; i++) { elems[i].disabled = true; } //这将禁用所有输

我们如何通过javascript禁用html中的所有元素。最简单的方法…

我不知道您为什么需要它,但这会起作用:

// this will disable all input elements
var elems = document.getElementsByTagName('input');
var len = elems.length;

for (var i = 0; i < len; i++) {
    elems[i].disabled = true;
}
//这将禁用所有输入元素
var elems=document.getElementsByTagName('input');
var len=元素长度;
对于(变量i=0;i
试试这个

function disableForm(theform) {
        if (document.all || document.getElementById) {
            for (i = 0; i < theform.length; i++) {
            var formElement = theform.elements[i];
                if (true) {
                    formElement.disabled = true;
                }
            }
        }
    }
函数禁用形式(theform){
if(document.all | | document.getElementById){
对于(i=0;i
或者你也可以试试这个,就像雷尔说的

function disableForm() {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = true;
    }
    var selects = document.getElementsByTagName("select");
    for (var i = 0; i < selects.length; i++) {
        selects[i].disabled = true;
    }
    var textareas = document.getElementsByTagName("textarea");
    for (var i = 0; i < textareas.length; i++) {
        textareas[i].disabled = true;
    }
    var buttons = document.getElementsByTagName("button");
    for (var i = 0; i < buttons.length; i++) {
        buttons[i].disabled = true;
    }
}
函数禁用形式(){
var inputs=document.getElementsByTagName(“输入”);
对于(变量i=0;i
要禁用整个页面,您可以找到一些信息,

可以通过访问表单中的所有表单元素(输入、选择、文本区域),您可以迭代集合禁用每个元素:

function disableForm(form) {
var length = form.elements.length,
    i;
  for (i=0; i < length; i++) {
    form.elements[i].disabled = true;
  }
}
我建议用“灯箱”式的方法

在页面上方添加一个绝对定位、透明的全屏div层。 这样,用户甚至不能点击链接

要向用户提供页面已禁用的视觉反馈, 你可以去e区。G50%透明黑色


顺便说一句,这里还有一个使用类似技术的教程。

有一次我不得不为我的网站创建一个教程。我需要禁用页面上除某些元素之外的所有交互。为此,我使用了以下方法: 首先确保从页面元素中删除所有事件绑定。您可以使用以下方法进行此操作:

   $('*').unbind();
下一步禁用页面上的所有链接:

   $('a').each(function(){$(this).click(function(){return false;})});
并禁用所有输入:

   $('input').attr('disabled', true);

代码需要在文档末尾执行。顺便说一句,您可以排除jquery选择器中的某些元素以保持它们的活动状态。

最简单的方法是将所有要禁用的表单元素放入
中,然后禁用字段集本身

例如:


如果不希望字段集周围有边框,请根据css删除它

最好的方法是添加一个具有最高z索引的div,宽度为100%,高度为100%。它将覆盖整个页面,并使所有不可单击的内容实际上都被禁用。这是最好的方法,因为它不会使用任何循环和任何复杂的代码。

只需使用拐杖即可

/**
 * Enable/disable all form controlls
 * @param status Status: true - form active, false - form unactive
 */
HTMLFormElement.prototype.setStatus = function (status) {
    for (var i in this.elements) {
        this.elements[i].disabled = !status;
    }
};

// Example:
var my_form = document.getElementById('my_form_with_many_inputs');
my_form.setStatus(false); // Disable all inputs in form
my_form.setStatus(true); // Enable all inputs in form

根据您需要的结果,您也可以这样做

`document.getElementById('main_form').style.display = 'none';`
其中
main\u form
是表单的id。您可以使用相同的技术隐藏包含要禁用的任何元素的
div

要锁定:

    var controls = document.querySelectorAll("button, input, select, textarea");
    for (var c of controls) {
        c.disabled = true;
    }
要解锁:

    var controls = document.querySelectorAll("button, input, select, textarea");
    for (var c of controls) {
        c.disabled = false;
    }

很简单。

别忘了文本区域!:数据这只是一个例子,您可以对
textarea
select
执行相同的操作,但您还需要处理其他元素。Div、span等,以防止其事件发生。@phoenix>这不是问题的一部分,是吗?也不要忘记
select
元素,或者可以在
$(function(){})
DOM就绪处理程序中运行它。不幸的是,如果您可以将焦点放在Div后面的某个元素上,则这没有帮助(通过选项卡切换到它或使用键盘快捷键)@Darren-Yep,要正确模拟模式对话框,您还必须捕获所有键盘事件,尤其是制表键,以防止焦点离开对话框元素。您可能会将所有可制表的元素重置为
tabindex='-1'
,但在对话框关闭后,您必须将它们全部重置回来。请注意,在IE上,textar字段e变灰,但仍可编辑。可能说明了明显的问题,但可以使用相同的函数(调整)重新启用窗体。
function enableForm(form){var length=form.elements.length,i;for(i=0;i
我不太喜欢这个答案,但是css选择器可以像这样被黑客攻击:
var inputs=document.querySelectorAll(“input,select,textarea,button”)
。然后像上面那样循环。
    var controls = document.querySelectorAll("button, input, select, textarea");
    for (var c of controls) {
        c.disabled = false;
    }