【问题标题】:xpages validate one field if a checkbox is selected如果选中了复选框,xpages 将验证一个字段
【发布时间】:2013-09-11 19:40:00
【问题描述】:

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

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

在编辑框的验证公式中,我有计算出的 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”,这是默认值,并尝试验证我的字段。

有什么方法可以在不先提交表单的情况下做到这一点?

【问题讨论】:

    标签: validation checkbox xpages


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      正如 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 属性。 DojoValidation.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-14
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        相关资源
        最近更新 更多