浏览 5078 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-14
就是在这些文本框的校验只是在焦点离开时触发,但是等表单提交时却不触发了,这样的话有些项目校验不正确也会被提交哦。该如何处理? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-15
dijit.form.ValidationTextBox的验证功能很强大,但是唯一不好的地方就是不能防止表单提交。
需要我们自己写一个方法防止form在验证失败的情况下提交表单。方法如下: <script language="javascript"> function checkAll(){ var isOk=true; dijit.registry.filter(function(widget){return widget.declaredClass=="dijit.form.ValidationTextBox"?true:false;}).forEach(function(widget){ if(!widget.isValid()){ alert(widget.invalidMessage); isOk=false; return; } }); return isOk; } </script> 这个方法会自动搜索页面所有ValidationTextBox组件,然后判断是否验证通过,如果没有通过则显示失败提示信息,同时防止表单提交。 只要在form的onSubmit事件上增加这个方法 就可以了。例如: <form onsubmit="return checkAll()"> 这是我在网上搜到的代码,我试了,可是不行,但是这个帖子的主人说可以,请大家帮我试一下 |
|
返回顶楼 | |
发表时间:2007-09-18
搞了半天,把dojo的版本更新到release版本的就成了!
|
|
返回顶楼 | |
发表时间:2007-09-20
你自己在上面搞了半天,还是自己解决了
|
|
返回顶楼 | |
发表时间:2007-09-22
如果一个页面使用了多个类型的控件的话,可以采用下面的代码来检测数据的正确性,只需把下面的declaredClass改一下就可以了,如果没有isValid()属性,可以使用valueOf()获取值以后使用正则表达式进行判断
dijit.registry.filter(function(widget){return widget.declaredClass=="dijit.form.ValidationTextBox"?true:false;}).forEach(function(widget){ if(!widget.isValid()){ alert(widget.invalidMessage); isOk=false; return; } 有问题大家可以讨论 |
|
返回顶楼 | |
发表时间:2007-10-15
至于其他的控件,比如dojo提供的数字校验框NumberTextBox用上面的校验就行不通了,偶的同事提出一个想法大家可以借鉴一下,就是所有的控件(除了日期框)都用ValidationTextBox,然后在其的属性中添加正则表达式校验就可以了。
比如: <input id="q11" type="text" name="Number" value="" dojoType="dijit.form.ValidationTextBox" regExpGen="IsNumber" trim="true" required="true" invalidMessage="输入合法的Number" /> 然后在script中定义这样一个函数: function IsNumber(){ return "^\\d+$";} 这样就可以了。 |
|
返回顶楼 | |