很多asp.net开发的新手可能首先会选择用vs提供的服务器控件来开发,包括我也如此。服务器控件如果等回调之后再验证用户输入的合法性有诸多缺点,比如耗费服务器资源,客户端输入的数据会被清空。一般都是客户端js验证,服务器端再验证。那么服务器生成的提交按钮如何实现js验证的功能呢?
答案就是给Button按钮设置onclientclick属性,一般做如下设置即可onclientclick="return IsCheck();"。然后在页面里面实现IsCheck()这个判断函数。
如:
<script type="text/javascript">
function IsCheck() {
var isCheck = true;
var obj = document.getElementById('FileUpload1');
if (obj.value != '') {
var stuff = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用:)
if (stuff != 'rar' && stuff != 'zip') {
alert('文件类型不正确,请选择.rar或.zip文件');
return false;
}
}
return isCheck;
}
</script>
以上代码是判定FileUpload可以上传的文件类型,如果不是zip或rar文件,则弹出提示,停止发送数据到服务器。
如果同时要用到服务器端验证控件,如RequiredFieldValidator,可以在js里面判断 Page_ClientValidate() 的真假,如果 Page_ClientValidate() 是 false ,IsCheck() 返回false即可。