Frage

Ich frage mich, ob es möglich ist, für mich das gesamte Update-Formular einzufrieren oder deaktivieren? Ich habe eine Eingabe h: Formular mit einem Kontrollkästchen in ihm. wenn Benutzer die Kontrollkästchen, würde Ich mag die ganze Form, so dass Benutzer daran hindern, von wechselnden Eingänge einzufrieren oder zu deaktivieren.

Danke, und ich bin mit JSF, Spring Web Flow, Facelets und Trinidad.

War es hilfreich?

Lösung

Wenn Sie nur bestimmte Eingaben deaktivieren möchten, ist es eine gute Idee, sie aufzuzählen:

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

Andere Tipps

Sie würden wollen Sie Javascript verwenden, um alle Formulareingaben für Behinderte einzustellen, wenn der Benutzer überprüft das Kontrollkästchen. So etwas wie:

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

Sie würden dies tun, für jedes Eingabeelement, wo ‚id‘ ist die ID dieses Elements.

Sie können nicht ein ganzes Formular sofort abzuschalten. Sie müssen wirklich jeder der Eingabeelemente deaktivieren. Es gibt grundsätzlich zwei Möglichkeiten, dies zu erreichen.

Erste Möglichkeit ist Javascript zu verwenden, um das Formular an den Server zu übermitteln, wenn die Checkbox angeklickt wird, so dass Sie disabled Attribut JSF Komponente verwenden können, um die Elemente zu deaktivieren. Hier ist ein einfaches Beispiel:

<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>

Hier #{bean.freeze} auf eine boolean Eigenschaft zeigen sollte.

Zweite Möglichkeit ist, eine Javascript-Funktion für diese zu schreiben. Dies erfordert nicht ein Formular und speichert Sie von einem HTTP-Request-Response-Zyklus, der für die Benutzererfahrung besser ist.

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

Die disableForm() JS-Funktion ist im Grunde einfach. Übergeben Sie einfach die Checkbox als Funktionsargument von this, so dass Sie die übergeordnete Form von checkboxElement.form bekommen können und dann alle Formularelemente durch form.elements erhalten. Sie müssen nur sicherstellen, dass Sie nicht deaktivieren Sie das Kontrollkästchen selbst, so dass Sie wieder die Form wieder aktivieren könnte:)

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;
        }
    }
}

Keine Notwendigkeit, die ID zu wissen, ist vorher und dies macht den JS-Code generische und wieder verwendbar.

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top