0

ユーザーがフォームの他の場所でチェックボックスをオンにしていない場合にのみ、フィールドを要求したいと考えています。

チェックボックスの値は、チェックされている場合は「はい」、チェックされていない場合は「いいえ」です。

編集ボックスの検証式には、計算された SSJS があります。

getComponentValue("SoleSource") == "いいえ"

関数は JS ソースとして格納されます

function getComponentValue(id){
   var field = getComponent(id);
   var value = field.getSubmittedValue();
   if( null == value ){
      // else not yet submitted
      value = field.getValue();
   }

   return value;
}

チェックボックス(ID「SoleSource」)がオンになっているかどうかに関係なく、常にデフォルト値である「いいえ」を返し、フィールドの検証を試みます。

最初にフォームを送信せずにこれを行う方法はありますか?

4

2 に答える 2

0

stwissel が既に述べたように、inputField を検証するには、clientSide と ServerSide の 2 つの方法があります。ユーザー入力に応じて検証を操作するには、ClientSide JavaScript コードを使用して「オンザフライ」で動作させ、サーバー側で再度送信時にドキュメント全体を検証します。

これは、Dojo を使用して ClientSide でこれを構築する方法の簡単な例です。ただし、ClientSide JavaScript の操作 (または誰かがブラウザーで JavaScript をオフにするだけ) によるデータの破損を避けるために、ユーザーがデータを保存/送信するときに、サーバー上でデータを再度検証することを忘れないでください。

<xe:djCheckBox id="select" value="#{viewScope.check}"
    checkedValue="yes" uncheckedValue="no">
    <xp:this.dojoAttributes>
        <xp:dojoAttribute name="onChange">
            <xp:this.value><![CDATA[#{javascript:return "var input = dijit.byId('"+getClientId('required')+ "'); input.required = !input.required;"}]]></xp:this.value>
        </xp:dojoAttribute>
    </xp:this.dojoAttributes>
</xe:djCheckBox>

<xp:inputText id="required" dojoType="dijit.form.ValidationTextBox">
    <xp:this.dojoAttributes>
        <xp:dojoAttribute name="required"
            value="true">
        </xp:dojoAttribute>
    </xp:this.dojoAttributes>
</xp:inputText>

この例では、dojo を使用して inputField をプロパティdijit.form.ValidationTextBoxに変更できるように変換しrequiredます。DojoValidation .

于 2013-09-12T08:57:42.120 に答える