题
在下面的示例中,我使用的是 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 并且在特定情况下仍然阻止验证。
解决方案
尝试重写标记中的验证方法。
这将起作用(刚刚测试过):
<input type="text" name="startDate" dojoType="dijit.form.DateTextBox"
constraints="{datePattern:'MM/dd/yyyy'}"
value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>'
validate='return true;'
/>
其他提示
我唯一的建议是以编程方式删除服务器端或客户端上的 dojoType。不可能保留 dojoType 而不对其进行验证。除非您创建自己的类型,其中包含您的逻辑。
我遇到了类似的问题,ValidationTextBox 满足了我的所有需求,但有必要禁用验证例程,直到用户首次按下“提交”后。
我的解决方案是使用几个新方法将其克隆到 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
不隶属于 StackOverflow