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”)是否被选中,它总是返回默认值“No”,并尝试验证我的字段。

有没有办法在不先提交表单的情况下做到这一点?

4

2 回答 2

0

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

于 2013-09-12T02:15:18.843 回答
0

正如 stwissel 已经说过的,有两种方法可以验证您的 inputField、clientSide 和 ServerSide。要根据用户输入来操作验证,我会使用 ClientSide javascript 代码使其更加“即时”,然后在服务器端再次验证提交时的整个文档。

这是一个简短的示例,我将如何使用 dojo 在 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属性。道场验证

于 2013-09-12T08:57:42.120 回答