情况是这样地:
    我通过以下方式进行页面文本框输入数据的验证:
<script type="text/javascript" language="javascript" src="js/FormValid.js"></script>
<script language="javascript" type="text/javascript" src="js/FV_onBlur.js"></script><form id="form1" name="form1" runat="server" method="post" action="" onsubmit="return validator(this)"><asp:TextBox ID="txtNum" runat="server" valid="required|isInt" errmsg="不能为空|输入整数!"></asp:TextBox><span id="errMsg_txtNum" style="color: blue"></span>我单独使用上面的js验证时没有问题的,可有时候页面中要判断某一数据的唯一性或者别的,所以我得用到数据库,连库了,我就想了用VS中的验证控件CustomValidator(或者我用到其它的验证控件),结果发现js验证失效,验证控件验证没有问题,而且我点击按钮时,页面左下角的“!”是一闪而过,根本看不到js是出什么问题了,不知道这是什么原因,期待高手们指点。
   还有,我请教下,就是在做一些页面时,有时候验证比较多,像这种情况是用js来验证呢,还是用VS提供的验证控件会比较好些,或者这两者本来就是一样的,麻烦高手告诉下我,这两种有优缺点可言不,谢了!

解决方案 »

  1.   

    解决js和验证控件的冲突!
    function 你的js函数()
    {
        if(Page_ClientValidate())
        {
           //........
           return true;
        }
        else
        {
            //......
            return false;
         }
    }一般用js验证较好,但简单的用控件也没什么不可以!!
      

  2.   

    这个貌似不行哦,不知道我是不是加错了,麻烦指点哈function fvCheck(e,fv,formElements) {
    if(Page_ClientValidate())
    {

    var validType = e.getAttribute('valid');
    var errorMsg = e.getAttribute('errmsg');
    if (!errorMsg) {
    errorMsg = '';
    }
    if (validType==null) return [];
    fv.addAllName(e.name);
    var vts = validType.split('|');
    var ems = errorMsg.split('|');
    var r = [];
    for (var j=0; j<vts.length; j++) {
    var curValidType = vts[j];
    var curErrorMsg = ems[j];
    var validResult;
    switch (curValidType) {
    case 'isNumber':
    case 'isEmail':
    case 'isPhone':
    case 'isMobile':
    case 'isIdCard':
    case 'isMoney':
    case 'isZip':
    case 'isQQ':
    case 'isInt':
    case 'isEnglish':
    case 'isChinese':
    case 'isUrl':
    case 'isDate':
    case 'isTime':
    validResult = fv.checkReg(e,RegExps[curValidType],curErrorMsg);
    break;
    case 'regexp':
    validResult = fv.checkReg(e,new RegExp(e.getAttribute('regexp'),"g"),curErrorMsg);
    break;
    case 'custom':
    validResult = eval(e.getAttribute('custom')+'(e,formElements)');
    break;
    default :
    validResult = eval('fv.'+curValidType+'(e,formElements)');
    break;
    }
    if (!validResult) r.push(curErrorMsg);
    }
    return r;
     }
    }
    String.prototype.trim = function() {
    return this.replace(/^\s*|\s*$/g, "");
    }
    var RegExps = function(){};
    RegExps.isNumber = /^[-\+]?\d+(\.\d+)?$/;
    RegExps.isEmail = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
    RegExps.isPhone = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
    RegExps.isMobile = /^((\(\d{2,3}\))|(\d{3}\-))?(13|15)\d{9}$/;
    RegExps.isIdCard = /(^\d{15}$)|(^\d{17}[0-9Xx]$)/;
    RegExps.isMoney = /^\d+(\.\d+)?$/;
    RegExps.isZip = /^[1-9]\d{5}$/;
    RegExps.isQQ = /^[1-9]\d{4,10}$/;
    RegExps.isInt = /^[-\+]?\d+$/;
    RegExps.isEnglish = /^[A-Za-z]+$/;
    RegExps.isChinese =  /^[\u0391-\uFFE5]+$/;
    RegExps.isUrl = /^http[s]?:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
    RegExps.isDate = /^\d{4}-\d{1,2}-\d{1,2}$/;
    RegExps.isTime = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;
      

  3.   

    哦!好像你加错了!!
    if else结构!
      

  4.   

    你可以先做个简单的!
    你会发现只有在所有验证控件通过验证后,才会去执行以下的代码块!
        if (Page_ClientValidate()) {    }
      

  5.   

    继续求助,为什么我这么简单的测试页面中还是有错误呢?
     function txtAlert()
        {
            if(Page_ClientValidate())
            {
               alert("abc");
               window.location.href="leftTime.aspx";
            }
            else
            {
                return false;
            }
         }
    或者我换成下面:
     function txtAlert()
        {
            if(Page_ClientValidate())
            {
               alert("abc");
               window.location.href="leftTime.aspx";
            }
         }
    错误依旧:提示function txtAlert()这一行object expected.<input type="text" runat="server" id="userName" maxlength="10" valid="required" errmsg="不能为空!" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input runat="server" type="submit" name="Submit" value="提交" onmousedown="txtAlert()" /><span id="errMsg_userName" style="color: blue"></span>而且我这还没有用验证控件验证,只是用js验证下非空。
    求高人指点。或者解决js和验证控件之间的冲突有别的“可行性方案”不?
      

  6.   

    郁闷,刚问了个同事,他说他以前同时使用js和验证控件时没有碰到类似的情况,说js验证和验证控件不冲突,难道是我的js有问题吗,郁闷了。
      

  7.   

    试验加一个验证控件,没什么问题!!
    <input type="text" runat="server" id="userName" maxlength="10" valid="required" errmsg="不能为空!" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input id="Submit1" runat="server" type="submit" name="Submit" value="提交" onmousedown="txtAlert()" /><span id="errMsg_userName" style="color: blue"></span>
    <!--以下是我加的用于测试-->        
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
    js没错!楼主试试!!