最近做一个项目,由于对数据合法性,正确性要求非常严格,因为牵涉到钱钱的问题。用asp。net开发的,在前台页面用JS验证判断处理的,后天也验证处理了的。如果输入不合法,没有通过验证,则获得焦点,要求用户重新输入。但是在一个文本框获得焦点,用户没有输入,而选择另一个窗体输入时,页面就死掉了。开始以为是JS写的有问题。但是调试的时候把浏览器的JS报错功能开启后,运行页面,JS又没有报错。最后我确定多半是JS抢焦点,导致页面死掉。但是为了达到及时提醒验证。不知道该怎么处理,希望高手能够支招,谢谢了

解决方案 »

  1.   

    function CheckCompanyName(obj)
        {
            var objvalue = obj.value;
             
             if(objvalue == "")
             {
                var CompanynameSpan =  document.getElementById("CompanynameSpan");
                CompanynameSpan.innerHTML="公司名不能为空!";
                obj.focus();
                return false;
             }
             else
             {
                 var regstr = /^(\w|[\u4E00-\u9FA5])*$/;
               
                 if(!regstr.test(objvalue))
                 {
                    var CompanynameSpan =  document.getElementById("CompanynameSpan");
                    CompanynameSpan.innerHTML="只能输入字母,汉字,数字,不能输入其他字符!";
                    obj.value = obj.value.replace(/(^\s+)|\s+$/g,"");;
                    obj.focus();
                    return false;
                 }
                 else
                 {
                    var CompanynameSpan =  document.getElementById("CompanynameSpan");
                    CompanynameSpan.innerHTML="";
                    CheckCompanyNameIsExist(objvalue,"");
                 }
                
             }
        }
        
        
         function CheckLoginName(loginname)
        {
             var regLoginName=/^[A-Za-z0-9]+$/;
             
             if(loginname == "")
             {
                var loginnameSpan =  document.getElementById("loginnameSpan");
                loginnameSpan.innerHTML="用户登录名不能为空!";
                document.getElementById("loginname").focus();
                return false;
             }
             else
             {
                if(!regLoginName.test(loginname))
                {
                    var loginnameSpan =  document.getElementById("loginnameSpan");
                    loginnameSpan.innerHTML="用户登录名,只能为字母或者数字!";
                    document.getElementById("loginname").value ="";
                    document.getElementById("loginname").focus();
                    return false;
                }
                else
                {
                    var loginnameSpan =  document.getElementById("loginnameSpan");
                    loginnameSpan.innerHTML="";
                    isExistLoginName(loginname);
                }
             }
        }
     
     function Add_onclick() 
     {
        var loginName = document.getElementById("loginname").value;
        
        if(loginName == "")
        {
            var loginnameSpan =  document.getElementById("loginnameSpan");
            loginnameSpan.innerHTML="用户登录名不能为空!";
            document.getElementById("loginname").focus();
            return false; 
        }
        else
        {
            var loginnameSpan =  document.getElementById("loginnameSpan");
            loginnameSpan.innerHTML="";
        }
        
        
         var trueName = document.getElementById("trueName").value;
        
        if(trueName == "")
        {
            var trueNameSpan =  document.getElementById("trueNameSpan");
            trueNameSpan.innerHTML="真实姓名不能为空!";
            document.getElementById("trueName").focus();
            return false; 
        }
        else
        {
            var trueNameSpan =  document.getElementById("trueNameSpan");
            trueNameSpan.innerHTML="";
        }
        
         var stime = document.getElementById("stime").value;
        
        if(stime == "")
        {
            var stimeSpan =  document.getElementById("stimeSpan");
            stimeSpan.innerHTML="启用时间不能为空!";
            document.getElementById("stime").focus();
            return false; 
        }
        else
        {
            var stimeSpan =  document.getElementById("stimeSpan");
            stimeSpan.innerHTML="";
        }
        
         var etime = document.getElementById("etime").value;
        
        if(etime == "")
        {
            var stimeSpan =  document.getElementById("stimeSpan");
            stimeSpan.innerHTML="失效时间不能为空!";
            document.getElementById("etime").focus();
            return false; 
        }
        else
        {
            var stimeSpan =  document.getElementById("stimeSpan");
            stimeSpan.innerHTML="";
        }
        
         var phone = document.getElementById("phone").value;
        
        if(phone == "")
        {
            var phoneSpan =  document.getElementById("phoneSpan");
            phoneSpan.innerHTML="联系手机不能为空!";
            document.getElementById("phone").focus();
            return false; 
        }
        else
        {
             var phoneSpan =  document.getElementById("phoneSpan");
             phoneSpan.innerHTML="";
        }
        
        
         var Companyname = document.getElementById("Companyname").value;
        
        if(Companyname == "")
        {
            var CompanynameSpan =  document.getElementById("CompanynameSpan");
            CompanynameSpan.innerHTML="单位名称不能为空!";
            document.getElementById("Companyname").focus();
            return false; 
        }
        else
        {
            var objvalue = document.getElementById("Companyname").value;
            
            var CompanynameSpan =  document.getElementById("CompanynameSpan");
            CompanynameSpan.innerHTML="";
            
            CheckCompanyNameIsExist(objvalue,"");
        }
        
      

  2.   

    function chkPhoneNum(telNum)

        if(telNum == "" || telNum == null)
        {
            var phoneSpan =  document.getElementById("phoneSpan");
            phoneSpan.innerHTML="手机号码不能为空";
            //document.getElementById("phone").focus();
            return false;
        }
        
        else
        {
            if(/^13\d{9}$/g.test(telNum)||(/^15\d{9}$/g.test(telNum))||(/^18[0,5,6,7,8,9]\d{8}$/g.test(telNum)))
            {
                var phoneSpan =  document.getElementById("phoneSpan");
                phoneSpan.innerHTML="";
                return true;
            }
            else
            {
                var phoneSpan =  document.getElementById("phoneSpan");
                phoneSpan.innerHTML="手机号错误,请重新输入";
                document.getElementById("phone").value ="";
                //document.getElementById("phone").focus();
                return false;
            }
        }  
    }
    function chkMoblileNum(telNum)

        if(telNum == "" || telNum == null)
        {
            var LinkmoiSpan =  document.getElementById("LinkmoiSpan");
            LinkmoiSpan.innerHTML="手机号码不能为空";
            //document.getElementById("Linkmoi").focus();
            return false;
        }
        
        else
        {
            if(/^13\d{9}$/g.test(telNum)||(/^15\d{9}$/g.test(telNum))||(/^18[8,9]\d{8}$/g.test(telNum)))
            {
                var LinkmoiSpan =  document.getElementById("LinkmoiSpan");
                LinkmoiSpan.innerHTML="";
                return true;
            }
            else
            {
                var LinkmoiSpan =  document.getElementById("LinkmoiSpan");
                LinkmoiSpan.innerHTML="手机号错误,请重新输入!";
                document.getElementById("Linkmoi").value ="";
                //document.getElementById("Linkmoi").focus();
                return false;
            }
        }  
    }function SelectAccountType(num)
    {
        if(num == 3)
        {
            document.getElementById("DistributorCountDiv").style.display ="none";
        }
        else
        {
            document.getElementById("DistributorCountDiv").style.display ="";
        }
    }
    function onloadText()
    {
        var date = new Date();
        
        var mth = Number(date.getMonth())+1;  
        
        var st=date.getFullYear() + "-" + mth + "-" + date.getDate();
        
        var ety = Number(date.getFullYear() + 10);
        var et = ety +"-"+mth+"-"+ date.getDate();
        
        
        document.getElementById("stime").value=st;
        document.getElementById("etime").value=et;
    }function checkTextvalue(obj)
    {
        var regstr = /^(\w|[\u4E00-\u9FA5])*$/;
        var objvalue = obj.value;
        
        if(objvalue != "" && objvalue != null)
        {
            if(!regstr.test(objvalue))
            {
                var textName = obj.name + "Span";
                var textNameSpan =  document.getElementById(textName);
                textNameSpan.innerHTML="只能输入字母,汉字,数字,不能输入其他字符!";
                obj.value = obj.value.replace(/(^\s+)|\s+$/g,"");;
                obj.focus();
                return false;
            }
            else
            {
                 var textName = obj.name + "Span";
                var textNameSpan =  document.getElementById(textName);
                textNameSpan.innerHTML="";
            }
        }
    }
    function DisTotalValue(obj)
    {
        
        changeTextvalueIsNull(obj);
        
        
        var DisTotal = document.getElementById("DisTotal").value;
        var distributionTota = document.getElementById("distributionTota").value;
        
        if(parseInt(DisTotal) != DisTotal)
        {
            var fenpeiSpan =  document.getElementById("fenpeiSpan");
            fenpeiSpan.innerHTML="帐号总数,只能填大于0,小于等于" + distributionTota + "的整数!";
           //alert("帐号总数,只能填大于0,小于等于" + distributionTota + "的整数!");
            document.getElementById("DisTotal").value="0";
            document.getElementById("DisTotal").focus();
            return false;
        }
        else
        {
            if(parseInt(DisTotal) < 0)
            {
                var fenpeiSpan =  document.getElementById("fenpeiSpan");
                fenpeiSpan.innerHTML="帐号总数,只能填大于0,小于等于" + distributionTota + "的整数!";
               //alert("帐号总数,只能填大于0,小于等于" + distributionTota + "的整数!");
                document.getElementById("DisTotal").value="0";
                document.getElementById("DisTotal").focus();
                return false;
            }
            else
            {
                if(parseInt(distributionTota) < parseInt(DisTotal))
                {
                    //alert("帐号总数不能大于剩余帐号数,剩余帐号个数:" + distributionTota );
                    var fenpeiSpan =  document.getElementById("fenpeiSpan");
                    fenpeiSpan.innerHTML="帐号总数不能大于剩余帐号数,剩余帐号个数:" + distributionTota;
                    document.getElementById("DisTotal").value="0";
                    document.getElementById("DisTotal").focus();
                    return false;
                }
                else
                {
                    var fenpeiSpan =  document.getElementById("fenpeiSpan");
                    fenpeiSpan.innerHTML="";  
                }
            }
        }
    }
    function disCountValue(obj)
    {
        
        changeTextvalueIsNull(obj);
        
        var DisTotal = document.getElementById("DisTotal").value;
        var DisCount = document.getElementById("DisCount").value;
        var distributorCount = document.getElementById("distributorCount").value;
        
        if(parseInt(DisCount) != DisCount)
        {
            //alert("分销商个数,只能填大于0,小于等于" + distributorCount +  "的整数!");
            var fenpeiSpan =  document.getElementById("fenpeiSpan");
            fenpeiSpan.innerHTML="分销商个数,只能填大于0,小于等于" + distributorCount +  "的整数!";
            document.getElementById("DisCount").value="0";
            document.getElementById("DisCount").focus();
            return false;
        }
        else
        {
            if(parseInt(DisCount) < 0)
            {
                 //alert("分销商个数,只能填大于0,小于等于" + distributorCount +  "的整数!");
                var fenpeiSpan =  document.getElementById("fenpeiSpan");
                fenpeiSpan.innerHTML="分销商个数,只能填大于0,小于等于" + distributorCount +  "的整数!";
                document.getElementById("DisCount").value="0";
                document.getElementById("DisCount").focus();
                return false;
            }
            else
            {
                
                if(parseInt(distributorCount) < parseInt(DisCount))
                {
                    //alert("分销商帐号数不能能开剩余分销商数,剩余分销商数:" + distributorCount);
                    var fenpeiSpan =  document.getElementById("fenpeiSpan");
                    fenpeiSpan.innerHTML="分销商帐号数不能能开剩余分销商数,剩余分销商数:" + distributorCount;
                    document.getElementById("DisCount").value="0";
                    document.getElementById("DisCount").focus();
                    return false;
                }
                else
                {
                     if(parseInt(DisTotal) < parseInt(DisCount))
                    {
                        //alert("分销商帐号数不能能开剩余分销商数,剩余分销商数:" + distributorCount);
                        var fenpeiSpan =  document.getElementById("fenpeiSpan");
                        fenpeiSpan.innerHTML="分销商帐号数不能能开剩余分销商数,剩余分销商数:" + DisTotal;
                        document.getElementById("DisCount").value="0";
                        document.getElementById("DisCount").focus();
                        return false;
                    }
                    else
                    {
                        var fenpeiSpan =  document.getElementById("fenpeiSpan");
                        fenpeiSpan.innerHTML="";
                    }
                }
            }
        }
       
    } function changeTextvalueIsNull(obj)
    {
        var text = obj.value;
                
        if(text == "" || text == null)
        {
            obj.value="0";
        }
    }
      

  3.   

    <body onload="onloadText();">
    <div class="weizhi">
                当前位置:用户管理 - <a href="#">添加新分销商</a>
            </div>
        <form name="AddFenXiaoShangProcess" method="post" action="AddFenXiaoShangProcess.aspx"  id="AddFenXiaoShangProcess">        <div class="HTMLContent">
            
                <table align="center" border="0" cellpadding="0" cellspacing="0">
                    <tr class="title">
                        <th colspan="4" align="center" valign="middle" style="height: 27px">
                            帐 号 信 息</th>
                    </tr>
                </table>
                
                <table align="center" border="0" width="100%" bgcolor="#5AAE18">
                    <tbody>
                        <tr>
                            <td align="right">
                                <span class="styleRed">*</span>登录名:
                            </td>
                            
                            <td align="left" >
                                <input name="loginname" type="text" id="loginname" maxlength="50" style="ime-mode:disabled"  onblur ="return CheckLoginName(this.value);"  onkeypress="if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode> 90 && event.keyCode < 97) || (event.keyCode> 122 && event.keyCode < 127)) event.returnvalue = false;"  /> 
                                <span id="loginnameSpan" style="color:Red; "></span>
                            </td>
                            
                            <td align="right" style="height: 26px">
                                <span style="color: #ff0000">*</span>真实姓名:
                            </td>
                            
                            <td align="left" style="height: 26px">
                                <input name="trueName" type="text" id="Text1" maxlength="50" onkeyup="checkTextvalue(this);" /><span id="trueNameSpan" style="color:Red; "></span>
      </td>
                        </tr>
                        
                        
                        <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>使用期限:
                            </td>
                            
                            <td align="left">
                                <input name="stime" type="text" value="" id="stime"  onfocus="WdatePicker({minDate:'%y-%M-#{%d}',skin:'whyGreen'})" />
                                至<input name="etime" type="text"  id="etime" value="" onfocus="WdatePicker({minDate:'%y-%M-#{%d}',skin:'whyGreen'})" />
                                <span id="stimeSpan" style="color:Red; "></span>
                            </td>
                            
                            <td align="right">
                                <span style="color: #ff0000">*</span>联系手机</td>
                            <td align="left">
                               <input name="phone" type="text" value="" id="phone" maxlength="11" onblur="return chkPhoneNum(this.value)"  />
                                <span id="phoneSpan" style="color: red">例如:13999999999</span></td>
                        </tr>
                        <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>账户状态:
                            </td>
                            <td align="left" >
                                <input id="Status" type="radio" name="Status" value="1" checked="checked" />启用
                                <input id="Status" type="radio" name="Status" value="0" />禁用 <span style="color: red">
                                    设置当前帐号是否可用,默认是启用</span></td>
                            
                            <td align="right">
                                <span style="color: #ff0000">*</span>扣点组:
                            </td>
                            
                            <td align="left">
                            <select id="koudian" name="koudian">
                            <option value="">暂不设置此用户权限组</option>
                            <%
                                if (pointGroupList != null && pointGroupList.Count > 0)
                                {
                                    for (int i = 0; i < pointGroupList.Count; i++)
                                    {
                                        %>
                                        <option value="<%=pointGroupList[i].Id %>"><%=pointGroupList[i].Pname %></option>
                                        <%
                                    }
                                }
                              
                            
                             %>
                             
                            </select>
                            </td>
                            
                        </tr>
                        
                        <tr>
                         <td align="right">
                                <span style="color: red">*</span>所属权限组:
                         </td>
                         
                         <td align="left" colspan="3">
                            <select id="compteceGroup" name="compteceGroup">
                                <%
                                    if (competenceGroupList != null && competenceGroupList.Count > 0)
                                    {
                                        if (competenceGroupList[0].Cgroup)
                                        {
                                            for (int i = 0; i < competenceGroupList.Count; i++)
                                            {
                                                if (competenceGroupList[i].Cgroup)
                                                {
                                                  %>
                                                
                                                <option value="<%=competenceGroupList[i].Id %>" selected="selected"><%=competenceGroupList[i].CName %></option>
                                            <%
                                                }
                                                else
                                                {
                                                  %>
                                                
                                                <option value="<%=competenceGroupList[i].Id %>"><%=competenceGroupList[i].CName %></option>
                                            <%
                                                }
                                            }                                        if (competenceGroup != null)
                                            {
                                                %>
                                                <option value="<%=competenceGroup.Id %>"><%=competenceGroup.CName %></option>
                                                <%
                                            }
                                            
                                             %>
                                            <option value="" >暂不设置此用户权限组</option>
                                            <%
                                        }
                                        else
                                        {
                                            if (competenceGroup != null)
                                            {
                                                %>
                                                <option value="<%=competenceGroup.Id %>" selected="selected"><%=competenceGroup.CName %></option>
                                                <%
                                            }
                                            
                                              for (int i = 0; i < competenceGroupList.Count; i++)
                                              {
                                               %>
                                                
                                                <option value="<%=competenceGroupList[i].Id %>"><%=competenceGroupList[i].CName %></option>
                                                <%
                                               }
                                            
                                            %>
                                            <option value="" >暂不设置此用户权限组</option>
                                            <%
                                        }
                                    }
                                    else
                                    {
                                        if (competenceGroup != null)
                                        {
                                            %>
                                            <option value="<%=competenceGroup.Id %>" selected="selected"><%=competenceGroup.CName %></option>
                                            <%
                                        }
                                        else
                                        {
                                             %>
                                            <option value="" selected="selected">暂不设置此用户权限组</option>
                                            <%
                                        }
                                    }
                                 %>
                            </select>
                         </td>
                        </tr>
      

  4.   

    <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>账户分配类型:
                            </td>
                            <td align="left" colspan="3"  >
                            <select id = "AccountType" name="AccountType" onchange="SelectAccountType(this.value);">
                                <%
                                    if (model.accountType == 1)
                                    {
                                        %>
                                        <option value="2" selected="selected">只能开一级分销商和采购商帐号</option>
                                        <option value="3">只能开采购商帐号</option>
                                        <%
                                    }
                                    else if (model.accountType == 2)
                                    {
                                        %>
                                        <option value="3" selected="selected">只能开采购商帐号</option>
                                        <%
                                            }
                                            else
                                            {
                                            }
                                       
                                 %>
                                  
                                </select>&nbsp; &nbsp;(<span style="color: red">设置当前所开帐号能够开启的下级帐号类型</span>)
                            </td>
                            
                        </tr>
                        
                        <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>账户分配数目:
                            </td>
                            <td align="left" colspan="3">
                            <div  style ="float :left ;">
                            <div id="DistributionTotalDiv" style ="float:left ;">
                            分配下属帐号总数<input type="text" id="DisTotal" name="DisTotal" maxlength="5" value="0" style="width: 59px" onchange="return DisTotalValue(this);"   />
                            </div>                        <div id="DistributorCountDiv" style="float:left">
                            其中分销帐号个数<input type="text" id="DisCount" name="DisCount" maxlength="5" value="0" style="width: 60px"  onchange="return disCountValue(this);" />
                            </div>
                           </div>
                                <span id="fenpeiSpan" style="color:Red; "></span></td>
                        </tr>
                        
                        <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>账户剩余数目:
                            </td>
                            <td align="left" colspan="3">
                            
                            <%
                                int dtCount = model.distributorCount - 1;
                                if (dtCount < 0)
                                {
                                    dtCount = 0;
                                }
                            
                             %>
                           <input type="hidden" id="distributorCount" name="distributorCount" value="<%=dtCount %>" />
                           <input type="hidden" id="distributionTota" name="distributionTota" value="<%=model.distributionTota - model.usedCount -1 %>" />
                           分销帐号剩余:<font color="red"><%=dtCount %></font>个
                                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 可用帐号剩余总数:<font color="red"><%=model.distributionTota - model.usedCount -1 %></font>个
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <span style="color: #ff0000">*</span>温馨提示:
                            </td>
                            <td align="left" colspan="3">
                                <span style="color: red">
                            分配下属帐号总数 要小于等于 可用帐号剩余总数 分销帐号个数 要小于等于 分销帐号剩余 </span>
                            </td>
                        </tr>
                        
                          <%
                        System.Data.DataRow[] drs = getSpecialCompetenceList();                            if (drs != null && drs.Length > 0)
                                {
                                    %>
                                    <input type="hidden" name="specialComCount" id="specialComCount" value="<%=drs.Length %>" />
                                    <%
                                    for (int i = 0; i < drs.Length; i++)
                                    {
                                            %>
                                            <tr>
                                                <td align="right" style="width: 180px">
                                                    <%=drs[i]["DictionaryName"].ToString()%>:
                                                    
                                                </td>
                                                
                                                <td align="left" colspan="3">
                                                      <input type="checkbox" id="specialCom<%=i+1 %>" name="specialCom<%=i+1 %>" value="<%=drs[i]["DictionaryValue"].ToString() %>" /><%=drs[i]["DictionaryText"].ToString()%>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">*说明:</span><%=drs[i]["Beizhu"].ToString()%>
                                                </td>
                                             </tr>
                                            <%
                                        
                                       
                                    }
                                    
                                    %>
                                    <tr>
                                        <td height="25" align="right">
                                            温馨提示:</td>
                                        <td height="25" align="left" colspan="3">
                                            <span style="color: red">
                                           特殊权限请谨慎处理,若因为特殊权限,而带来的一切损失,平台不承担任何责任。
                                            <span id="Span1"></span>
                                            </span>
                                        </td>
                                        
                                    </tr>
                                    <%
                                }
                            
                         %>
                    </tbody>
                </table>
            </div>
      

  5.   

    我也吓晕了。把你所有的blur事件里面的focus()去掉
      

  6.   


    这个是真的哈,但是为了避免,有些用户,浏览器禁用JS,因此为了保险起见,JS验证和后天验证都要写。
      

  7.   

    我今天也遇到了这个问题啊,页面卡死,cpu跑到70%,楼主怎么解决的呢?