4

在下面的示例中,我使用的是dijit.form.DateTextBox

<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" constraints="{datePattern:'MM/dd/yyyy'}"  value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' />

因此,例如,如果用户开始在日期中输入“asdf”,则该字段将变为黄色,并且会出现一个弹出错误消息说The value entered is not valid.. 即使我删除constraints="{datePattern:'MM/dd/yyyy'}"它仍然有效。

在不详细说明原因的情况下,我希望能够保留 dojoType 并在特定情况下仍然阻止验证。

4

3 回答 3

6

尝试覆盖标记中的 validate 方法。

这将起作用(刚刚测试过):

<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" 
  constraints="{datePattern:'MM/dd/yyyy'}"  
  value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>'
  validate='return true;'
/>
于 2008-08-19T04:13:01.923 回答
1

我唯一的建议是以编程方式删除服务器端或客户端的 dojoType。不可能保留 dojoType 并且不对其进行验证。除非您创建自己的类型,其中包含您的逻辑。

于 2008-08-19T02:02:30.377 回答
1

我有一个类似的问题,ValidationTextBox 满足了我的所有需求,但是在用户第一次按下提交之前必须禁用验证例程。

我的解决方案是使用几种新方法将其克隆到 ValidationConditionalTextBox 中:

    enableValidator:function() {
        this.validatorOn = true;
    },

    disableValidator: function() {
        this.validatorOn = false;
    },

然后 - 在验证器中:function() 我添加了一个检查:

        if (this.validatorOn)
        { ... }

相当简单,我的默认值 validatorOn 是 false (这出现在 javascript 的顶部)。当我的表单提交时,只需调用 enableValidator()。您可以在此处查看完整的 JavaScript:

http://lilawnsprinklers.com/js/dijit/form/ValidationTextBox.js

于 2008-09-12T18:55:06.177 回答