Как заморозить или отключить форму ввода обновления

StackOverflow https://stackoverflow.com/questions/1954214

Вопрос

Интересно, можно ли мне заморозить или отключить всю форму обновления?У меня есть входная форма h:form с флажком.когда пользователи устанавливают этот флажок, я хотел бы заморозить или отключить всю форму, чтобы запретить пользователям изменять входные данные.

Спасибо, я использую JSF, Spring Web Flow, Facelets и Trinidad.

Это было полезно?

Решение

Если вы хотите отключить только определенные входы, рекомендуется их перечислить:

function OptCheckBox(chkd) {
 if (chkd == 'y') {
  document.frm.input1.disabled = true;
  document.frm.input2.disabled = true;
 }
}

Другие советы

Вы хотели бы использовать JavaScript, чтобы отключить все входные данные формы, когда пользователь устанавливает флажок.Что-то вроде:

document.getElementById('id').disabled = true;

Вы должны сделать это для каждого элемента ввода, где «id» — это идентификатор этого элемента.

Вы не можете отключить всю форму сразу.Вам действительно нужно отключить каждый из элементов ввода.Есть два основных способа добиться этого.

Первый способ — использовать Javascript для отправки формы на сервер при установке флажка, чтобы вы могли использовать компонент JSF. disabled атрибут для отключения элементов.Вот базовый пример:

<h:form>
    <h:selectBooleanCheckbox value="#{bean.freeze}" onclick="submit()" />
    <h:inputText value="#{bean.value1}" disabled="#{bean.freeze}" />
    <h:inputText value="#{bean.value2}" disabled="#{bean.freeze}" />
    <h:inputText value="#{bean.value3}" disabled="#{bean.freeze}" />
</h:form>

Здесь #{bean.freeze} должно указывать на boolean свойство.

Второй способ — написать для этого функцию Javascript.Это не требует отправки формы и избавляет вас от одного цикла HTTP-запрос-ответ, что лучше для пользователя.

<h:form>
    <h:selectBooleanCheckbox onclick="disableForm(this)" />
    <h:inputText value="#{bean.value1}" />
    <h:inputText value="#{bean.value2}" />
    <h:inputText value="#{bean.value3}" />
</h:form>

JS-функция disableForm() в принципе просто.Просто передайте флажок в качестве аргумента функции с помощью this чтобы вы могли получить родительскую форму с помощью checkboxElement.form а затем получить все элементы формы с помощью form.elements.Вам нужно только убедиться, что вы не отключили сам флажок, чтобы можно было снова включить форму :)

function disableForm(checkboxElement) {
    var elements = checkboxElement.form.elements;
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        if (element != checkboxElement) {
            element.disabled = checkbox.checked;
        }
    }
}

Нет необходимости заранее знать идентификаторы, и это делает код JS универсальным и пригодным для повторного использования.

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top