質問

私は私が全体の更新フォームをフリーズまたは無効にすることが可能ですかしら?その中にあるチェックボックスを持つフォーム:私は、入力時間を持っています。ユーザーがチェックボックスをオンにするとき、私は変化する入力からの不許可のユーザので、フォーム全体を凍結または無効にしたいと思います。

おかげで、私はJSFを使用しています、春のWebフロー、Faceletsは、トリニダード。

役に立ちましたか?

解決

あなたが唯一の特定の入力を無効にしたい場合は、それはそれらを列挙することをお勧めします:

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

他のヒント

あなたはときに、ユーザーの確認チェックボックス無効にすべてのフォーム入力を設定するにはJavaScriptを使用したいと思います。ような何かます:

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

あなたが「ID」は、その要素のIDである各入力要素のためにこれを行うだろう。

一度にフォーム全体を無効にすることはできません。あなたは本当に入力要素のそれぞれを無効にする必要があります。これを実現するには2つの方法が基本的にあります。

最初の方法は、あなたが要素を無効にするには、JSFコンポーネントのdisabled属性を使用することができるように、チェックボックスがクリックされたときにサーバーにフォームを送信するためにJavascriptを使用することです。ここでは基本的な例があります:

<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関数を記述することです。これは、フォーム送信必要と優れたユーザーエクスペリエンスのためにある1つの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;
        }
    }
}

ノーIDの事前を知る必要があり、これは、JSコードは汎用的で再利用可能になります。

希望このことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top