在集成DOJO javascript库和Spring框架时,我遇到了一些问题。具体地说,问题是如何验证文本框和单选按钮。我正在使用Spring-Js库来装饰标准的html表单元素。
<form:input path="actionDescription" id="actionDescriptionId"/>
<script type="text/javascript">
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "actionDescriptionId",
widgetType : "dijit.form.SimpleTextarea",
widgetAttrs : { disabled : false,
required: true,
rows: "4",
cols: "60",
placeHolder: "Enter description of fault",
style: "width:auto;height:50px;"
}}));
</script>我一直在用FireFox进行开发(使用Firebug),直到现在我才意识到(在看了Dojo/Dijit文档之后) dijit.form.SimpleTextArea不支持'required‘属性。我以前从来没有检查过这一点,因为它在FireFox中都工作得很好。我有一个表单按钮,当点击它时,将验证所有装饰的元素,在firefox中,包括文本区和单选按钮在内的所有组件都将弹出一个漂亮的工具提示,指示该字段是必需的。使用的代码行如下:
<script type="text/javascript">
Spring.addDecoration(
new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
</script>这很棒,因为它可以阻止表单提交,直到所有必填字段都完成。单选按钮弹出,弹出一条漂亮的消息,告诉用户必须选择其中一个选项,文本区域弹出一条漂亮的消息,告诉用户键入某些内容。然而,它在Safari或IE中不起作用。验证不适用于这些其他浏览器上的文本区域和单选按钮,因此使用服务器端验证将用户重定向回表单。虽然这是可行的,但我更喜欢从一开始就阻止表单提交,并且有一致的错误报告,而不是客户端和服务器端错误消息的混合。
我真的很难理解为什么它在firefox中工作,而dijit textarea组件不应该支持'required‘属性?我喜欢使用spring-js来增强基本组件的想法,但我真的不明白如何在FireFox中使用验证来装饰digit.form.SimpleTextarea元素,因为根据数字文档,没有任何支持的验证?
我想知道是否有其他使用Spring-Js/ Spring -DOJO集成的Spring开发人员遇到过这种行为,他们是否对它的工作原理有更深入的理解。我真正想要的是在包括IE在内的所有浏览器中验证文本。
发布于 2012-09-04 16:45:46
好了,问题出在火狐中的HTML5为文本和单选按钮提供了验证行为。因为我的目标受众是IE (可能还有IE6),所以我不能依赖HTML5表单验证,因此我不得不接受这样一个事实:DOJO的用于文本和单选按钮的Dijit小部件不支持验证。
多亏了http://www.harelmalka.com/?p=137,我已经创建了一个变通方法来启用对文本的验证。然而,对于单选按钮,我提供了一个默认选择,以消除验证的需要。
https://stackoverflow.com/questions/12195177
复制相似问题