代码之家  ›  专栏  ›  技术社区  ›  Community wiki

是否有任何方法可以禁用dojo日期文本框的客户端验证?

  •  4
  • Community wiki  · 技术社区  · 1 年前

    在下面的示例中,我使用 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,并且在特定情况下仍然阻止验证。

    3 回复  |  直到 12 年前
        1
  •  6
  •   RodeoClown    16 年前

    请尝试重写标记中的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;'
    />
    
        2
  •  1
  •   Nick Berardi    16 年前

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

        3
  •  1
  •   esarjeant    16 年前

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

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

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

    然后,在validator:function()中,我添加了一个检查:

            if (this.validatorOn)
            { ... }
    

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

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