【问题标题】:Disable an entire form in js without individually disabling each field在js中禁用整个表单而不单独禁用每个字段
【发布时间】:2020-07-26 20:55:44
【问题描述】:

我已经使用 JSF 创建了一个表单。我的表单中有许多手风琴面板,每个手风琴面板由几个字段组成。

我想使用 js 禁用一个这样的手风琴面板的所有字段。除了单独禁用手风琴面板的每个字段之外,是否有一种快捷方法可以一次性禁用整个手风琴面板。

【问题讨论】:

  • 用JS禁用其实并不是禁用。客户端可以轻松地再次启用它们,如果您在客户端禁用它们,服务器仍然认为它们已启用并尝试验证它们等......最好寻找类似showcase.omnifaces.org/taghandlers/massAttribute
  • 而且由于客户端上没有 JSF 这个问题是有效的(如果你真的想在客户端禁用), JSF 相关

标签: javascript forms jsf field disable


【解决方案1】:

您可以为所有表单字段添加一个类,然后选择具有该类的字段。

一旦有了 DOM 引用,就可以遍历表单字段并禁用。

演示:

function disableForm() {
    let elems = document.querySelectorAll(".form-elements");
    for (const elem of elems) {
        elem.disabled = true;
    }
}

function enableForm() {
    let elems = document.querySelectorAll(".form-elements");
    for (const elem of elems) {
        elem.disabled = false;
    }
}
<form>
<label>Element 1</label><br />
<input type="text" class="form-elements" /> <br />
<label>Element 2</label> <br />
<select class="form-elements"> <br />
    <option value="1">1</option>
</select>
<br />
</form>
<br />
<button type="button" onclick="disableForm()">Disable Form</button>
<button type="button" onclick="enableForm()">Enable Form</button>

【讨论】:

  • 给每个字段添加class元素,会不会影响表单的UI?
  • "Setter not found for property class" 将此类分配给每个元素后出现错误
  • 我必须使用 styleclass 而不是 class。但是在一些 inputText 面板上,样式类已经被用于不同的目的,例如:
  • 像这样添加一个你的班级。 &lt;p:outputLabel for="contactPersonNo" value="Contact Person Number" /&gt; &lt;p:inputText id="contactPersonNo123" styleClass="textbox someOtherClass" value="#{xyz..contactPerson}" maxlength = "10" required="true" requiredMessage="Value is Required"&gt; &lt;p:keyFilter preventPaste="false" regEx="/[\d\-\.]/" /&gt; &lt;/p:inputText&gt;
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2012-07-19
  • 2017-05-04
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多