使用Really_easy_field_validation_with_Prototype进行表单验证,具体内容如下
1、第一步当然是先引入js和css文件。
<link href="${ ctx}/skin/css/validation.css" type="text/css" /> <script type="text/javascript" src="${ ctx}/scripts/prototype.js"></script> <script type="text/javascript" src="${ ctx}/scripts/effects.js"></script> <script type="text/javascript" src="${ ctx}/scripts/validation.js"></script>
2、然后我在页面的开头添加了如下代码(我把这段代码放在meta.jsp里的,因为每个jsp都在头部包含它。)
function afterLoaded(){ if(document.all){ var forms = document.forms; if(forms.length > 0){ for(var i = 0; i < forms.length; i++){ if(forms[i]["method:save"]) new Validation(forms[i]); } } window.clearInterval(inteval); inteval = null; } } var inteval = window.setInterval("afterLoaded();", 500 );
3、如果要对一个输入框进行验证,只要在他的class里添加一些标志即可。如
复制代码 代码如下:
<input type="text" value=""/>
这表示这个字段必填,而且需要是数字。其他的内容,看一下validation.js末尾的代码就明白了。
4、另外我对validation.js做了点修改,因为我们的一个表单有多个submit按钮,并且一般的只有name=method:save的按钮被点击时才需要触发验证,所以修改了验证js。
将原来的
复制代码 代码如下:
if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
改为了
复制代码 代码如下:
if(this.options.onSubmit) Event.observe(this.form["method:save"],'click',this.onSubmit.bind(this),false);
这样也存在问题,但对于我们现在的样子,这个更合适些。
5、原来的css对按钮等造成了影响,所以我把那些border的内容都去掉了。
6、这个验证框架好像只考虑了一些情况,若要灵活使用还要花点时间具体了解了才行,还提供了callback机制,下载他的原版后,在html里可以看到演示。