今天做项目是无意中发现一个问题:
点击提交按钮的时候验证用户输入是否完整,并且提示用户操作不可回复,是否要确认改操作。
很常见的一个需求,但是问题来了,没有添加OnClientClick事件的时候,验证控件正常运行,添加了该事件提示用户操作的时候,验证控件直接失效,百度了一下发现有类似问题,给出的解决方案是手动调用页面验证的js事件
1: function CheckClientValidate(){
2: Page_ClientValidate();
3: if (Page_IsValid){
4: return true;
5: }
6: else{
7: return false;
8: }
9: }
新的问题又来了,这回是可以正常验证了,但是验证的是页面所有的验证控件(页面中有不同的验证分组的)通过查看Page_ClientValidate()方法,发现可以添加参数ValidationGroup,来验证不同的分组,OK此问题解决。
还有一个问题是控件会验证两次,继续观察Page_ClientValidate()代码,发现
1: onclick="if(Page_ClientValidate()) return CheckAgree();if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "
看到没,在调用Checkgree()函数前先验证了一次页面,但如果页面没有通过验证,就会执行下面的if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();又执行了一次验证。
坑爹呢这是,于是将button的CausesValidation设置为false。
清爽了……