无论如何,是否要禁用dojo日期文本框的客户端验证?
时间:2020-03-05 18:40:35 来源:igfitidea点击:
在下面的示例中,我使用的是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",则该字段将变为黄色,并显示一条弹出错误消息,提示"输入的值无效"。即使我删除了" constraints =" {datePattern:'MM / dd / yyyy'}"`,它仍然有效。
在不详细说明原因的情况下,我希望能够保留dojoType并在特定情况下仍阻止验证。
解决方案
回答
我唯一的建议是以编程方式删除服务器端或者客户端上的dojoType。不能保留dojoType并使它不验证。除非我们创建自己的类型且其中包含逻辑。
回答
尝试覆盖标记中的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;' />
回答
我有一个类似的问题,其中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