如何使用javascript/jquery禁用表单中的所有内容?

Luc*_*uci 43 javascript jquery readonly

我有一个弹出一个图层的表单,我需要让该表单中的所有内容只读取它的输入类型.无论如何这样做?

Nic*_*ver 40

您可以使用:input选择器,并执行以下操作:

$("#myForm :input").prop('readonly', true);
Run Code Online (Sandbox Code Playgroud)

:input选择所有<input>,<select>,<textarea><button>元件.此属性也是readonly,如果您使用disabled元素,它们将不会发布到服务器,因此请根据该属性选择所需的属性.


Tim*_*own 37

这在普通的JavaScript中非常简单,并且可以在支持只读表单输入的所有浏览器中高效工作(这几乎是过去十年中发布的所有浏览器):

var form = document.getElementById("your_form_id");
var elements = form.elements;
for (var i = 0, len = elements.length; i < len; ++i) {
    elements[i].readOnly = true;
}
Run Code Online (Sandbox Code Playgroud)

  • “elements[i].disabled = true;”怎么样? (4认同)

pio*_*_cz 33

使用HTML5,可以禁用使用该<fieldset disabled />属性包含的所有输入.

禁用:

如果设置了此布尔属性,则表示作为其后代的表单控件(第一个可选元素的后代除外)将被禁用,即不可编辑.他们不会收到任何浏览事件,例如鼠标点击或与焦点相关的事件.浏览器经常将这些控件显示为灰色.

参考:MDC:fieldset

  • 我希望这个属性也可以在&lt;form&gt;上定义,因此我们可以禁用不使用&lt;fieldset&gt;的表单。 (3认同)

Woj*_*chu 7

老问题,但没有人提到使用 css:

pointer-events: none;

整个窗体不受点击影响,但也会悬停

  • 显然,仅禁用指针事件,因此用户仍然可以使用键盘(例如 TAB 键)进行访问。 (7认同)
  • 这就像一个魅力。完美的答案。我在 css 中定义了一个 form.disabled 选择器,并将 css 类应用于表单。还可以用于设置样式或取消隐藏元素(例如“表单正在提交”消息或其他任何内容)。这将所需的 javascript 减少到绝对最低限度。 (2认同)

小智 5

它的纯Javascript:

var fields = document.getElementById("YOURDIVID").getElementsByTagName('*');
for(var i = 0; i < fields.length; i++)
{
    fields[i].disabled = true;
}
Run Code Online (Sandbox Code Playgroud)


Uma*_*har 5

您可以使用 jQuery 以最简单的方式执行此操作。它将为所有 input、select 和 textarea 元素执行此操作(即使这些类型的数量不止一个)。

$("input, select, option, textarea", "#formid").prop('disabled',true);

或者您也可以这样做,但这将禁用所有元素(仅那些可以应用它的元素)。

$("*", "#formid").prop('disabled',true);


disabled 属性可以应用于以下元素:

  • 按钮
  • 字段集
  • 输入
  • 选择组
  • 选项
  • 选择
  • 文本区

但是,您更喜欢使用什么取决于您。


小智 5

老问题,但现在您可以使用数组方法纯 javascript 中轻松完成:

form = document.querySelector('form-selector');
Array.from(form.elements).forEach(formElement => formElement.disabled = true);
Run Code Online (Sandbox Code Playgroud)

1)form.elements返回一个包含所有表单控件(输入、按钮、字段集等)的集合作为 HTMLFormControlsCollection。

2)Array.from()将集合转换为数组对象。

3)这允许我们使用该array.forEach()方法来遍历数组中的所有项...

4) ...并使用formElement.disabled = true.