青空

导航

利用JavaScript手动触发ASP.Net validator验证的方法总结

  开发环境.NET Framework 3.5.1 sp1

   参考文章 http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx

                 http://msdn.microsoft.com/zh-cn/library/aa479045.aspx

                 http://www.cnblogs.com/minsentinel/archive/2008/03/21/1116502.html

      我们在用Web Form开发的的时候,有时候可能需要在客户端用JavaScript来触发Validator验证控件的验证来检查输入的正确性。

   比如有个在弹出窗口中预览编辑中的内容的功能,在预览之前需要对编辑中的内容进行输入检查。如果输入检查是通过Validator控件的客户端验证来实现的,

   这里就涉及到怎样在不进行submit的情况下用JavaScript来触发Validator验证。

       我们知道在通过aspx生成的html代码中,会有很多框架自动添加的内嵌资源(web source)文件引用和代码。对于Validator控件的验证代码就藏在其中。

   通过Debug跟踪有幸找到了源代码,发现关键作用的是以下2个JavaScript方法:

1 Page_ClientValidate(validationGroup) 返回值是布尔值(true:验证通过, false:验证失败)。
2 ValidatorValidate(val, validationGroup, event) 无返回值,无法判断验证是否通过。调用Validator的验证并更新其表示形式以及验证失败时聚焦控件等

   其实在Page_ClientValidate里会调用ValidatorValidate来调用Validator的验证和并根据display属性的值(None, Static, Dynamic)来调整Validator的表示形式。

   一, Page_ClientValidate方法

        参数为ValidationGroup属性的值。没有指定参数的情况下表示触发页面所有的Validator控件。

<script type="text/javascript">
function preview() {
      // 输入验证
if (!Page_ClientValidate("Detail")) {
return;
}

// 验证成功后的处理
      ......
}
</script>

   如果没有使用ValidationSummary控件,而且不关心验证成功与否的后续处理。那可以使用ValidatorValidate方法

   二, ValidatorValidate方法

        参数: var                    要触发的Validator控件对象

                validationGroup  ValidationGroup属性的值

                event                验证对象ID(用于聚焦。需要focusOnError=“true”的情况下才有用

        例子程序可以参考这里

  第一次写博,如果内容有欠妥当的地方还请谅解,或者给我留言。谢谢!

posted on 2010-04-08 00:42  青空  阅读(1536)  评论(0编辑  收藏  举报