如果选中了复选框,xpages将验证一个字段

时间:2013-09-11 19:40:00

标签: validation checkbox xpages

如果用户没有选中表单上其他位置的复选框,我只想要一个字段。

复选框的值如果选中则为“是”,如果未选中则为“否”。

在编辑框的验证公式中,我有计算出的SSJS:

getComponentValue(“SoleSource”)==“No”

该函数作为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”),它都会返回“No”,这是默认值,并尝试验证我的字段。

如果没有先提交表格,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

只有在将值发送到服务器时,才能访问字段值。我建议采用双重方法。一:使用客户端JavaScript检查(为了用户的舒适度)和服务器端完成提交(用于数据完整性)。

答案 1 :(得分:0)

正如stwissel所说,有两种方法可以验证inputField,clientSide和ServerSide。要根据用户输入操作验证,我将使用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