我在将DOJO javascript库与Spring框架集成时遇到了一些问题。具体来说,问题是如何验证textareas和radiobutton。我正在使用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中所有组件,包括文本区域和radiobutton将弹出一个漂亮的工具提示,指示该字段是必需的。代码行使用的是:
<script type="text/javascript">
Spring.addDecoration(
new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
</script>
这很棒,因为它会阻止表单提交,直到完成所有必填字段。 radiobuttons弹出一条很好的消息,说用户必须选择其中一个选项,文本区域会弹出一条很好的消息告诉用户输入内容。但是,它在Safari或IE中不起作用。验证不适用于这些其他浏览器上的文本区域和单选按钮,因此服务器端验证用于将用户重定向回表单。虽然这有效,但我更倾向于首先阻止表单提交并且具有一致的错误报告,而不是混合客户端和服务器端错误消息。
当dijit textarea组件不支持'required'属性时,我真的很难理解为什么它在firefox中工作?我喜欢使用spring-js来增强基本组件的想法,但我真的不明白如何根据数字文档在FireFox中使用digit.form.SimpleTextarea进行装饰验证,没有任何支持验证
我想知道使用Spring-Js / Spring-DOJO集成的任何其他Spring开发人员是否遇到过这种行为,以及他们是否对其工作方式有了更深入的了解。我真正想要的是在包括IE在内的所有浏览器中验证textareas。
答案 0 :(得分:0)
好的,问题在于Firefox中的HTML5提供了textareas和radiobutton的验证行为。由于我的目标受众是IE(可能还有IE6),我不能依赖HTML5表格验证,因此我坚持DOJO的Dijit小部件用于textareas和radiobuttons不支持验证。
感谢http://www.harelmalka.com/?p=137我创建了一个解决方法来启用textareas验证。然而,对于radiobutton,我提供了一个默认选择来否定验证的需要。