function invalidate()
            {
               //日期不能为空
               document.getElementById("lblFcRefuelDateTime").innerHTML="";
               if (document.getElementById("txtFcRefuelDateTime").value=='')
               {    document.getElementById("lblFcRefuelDateTime").innerHTML="日期不能为空";
                    document.getElementById("txtFcRefuelDateTime").focus();
                    return  false  ;  }
              
               //txt只读 没什么用了
               if (   result =/^\d{4}-\d{2}-\d{2}$/.test(document.getElementById("txtFcRefuelDateTime")))
               {
                    document.getElementById("lblFcRefuelDateTime").innerHTML="请填写正确的加油日期";
                    document.getElementById("txtFcRefuelDateTime").focus();
                    return  false  ;
               }
                 //不能大于今天的日期
                 var textTime=  document.getElementById("txtFcRefuelDateTime").value;
                 var nowDate = new Date();
                 var nowTime=  nowDate.format("yyyy-MM-dd");
               if ( textTime > nowTime)
               {
                    document.getElementById("lblFcRefuelDateTime").innerHTML="日期不能大于今天";
                    document.getElementById("txtFcRefuelDateTime").focus();
                    return  false  ;
               }
                document.getElementById("lblFcRefuelDateTime").innerHTML="";                             
               //不能小于 上一条记录日期
                 var  backTime =  document.getElementById("hdnOldFcTime").value;
                 backTime=  backTime.toString("yyyy-MM-dd");
               //alert(backTime); 
               if( backTime > textTime )
               {    document.getElementById("lblFcRefuelDateTime").innerHTML="时间不能小于上一条记录";
                    document.getElementById("txtFcRefuelDateTime").focus();
                    return  false  ;
               }
               document.getElementById("lblFcRefuelDateTime").innerHTML="";
               // 请填写燃油类型
                if (document.getElementById("sltFcFuelType").selectedIndex==0)
               {   document.getElementById("lblFcFuelType").innerHTML="请选择燃油类型";
                   document.getElementById("sltFcFuelType").focus();
                   return  false  ;
               }
               //请填写加油数
                if (document.getElementById("txtFcRefuel").value=='')
               {    document.getElementById("lblFcRefuel").innerHTML="请填写加油数";
                    document.getElementById("txtFcRefuel").focus();
                    return  false  ;
               }
               //验证小数
               var str=document.getElementById("txtFcRefuel").value;
               var pattern =/^[0-9]+([.]\d{1,2})?$/;
               if(!pattern.test(str)){
                     document.getElementById("lblFcRefuel").innerHTML="请输入数字(例:0.00),最高保留两位小数";      
                     document.getElementById("txtFcRefuel").focus();
                     return false;
                }
               //加油数要大于0
                if (document.getElementById("txtFcRefuel").value< 1 ){
                    document.getElementById("lblFcRefuel").innerHTML="加油数必须大于0";
                    document.getElementById("txtFcRefuel").focus();
                     return  false  ;
               }
                    document.getElementById("lblFcRefuel").innerHTML="";
               //里程表读数
                if (document.getElementById("txtFcTripMeter").value=='')
               {    document.getElementById("lblFcTripMeter").innerHTML="请填写里程表读数";
                    document.getElementById("txtFcTripMeter").focus();
                    return  false  ;
               }
                  //验证小数
               var str=document.getElementById("txtFcTripMeter").value;
               var pattern =/^[0-9]+([.]\d{1,2})?$/;
               if(!pattern.test(str))
               {
                   document.getElementById("lblFcTripMeter").innerHTML="请输入数字(例:0.00),最高保留两位小数";      
                   document.getElementById("txtFcTripMeter").focus();
                 return false;
                }
                //里程数要大于0
                if (document.getElementById("txtFcTripMeter").value< 1 )
               {    document.getElementById("lblFcTripMeter").innerHTML="里程数不能为负";
                    document.getElementById("txtFcTripMeter").focus();
                    return  false  ;
               }
               document.getElementById("lblFcTripMeter").innerHTML="";
                //读数表 不能小于上一次
               var oldvalue = parseFloat( document.getElementById("hdnOldFcTripMeter").value);
               var nowvalue =  parseFloat( document.getElementById("txtFcTripMeter").value);
               if (oldvalue >= nowvalue)
               {   document.getElementById("lblFcTripMeter").innerHTML="不能小于或者等于上一次读数";
                   document.getElementById("txtFcTripMeter").focus();
                   return  false  ;
               }
               ///所有验证结束后 打开窗口 补充信息
                   var s="<%=specId%>" ;
                 
                    if(s==0)
                        {    document.getElementById ("divUpdateSpec").style.display ="";
                             return false ;
                        }
              return true ;
              }

解决方案 »

  1.   

    这个函数的功能就是验证所有textbox控件的内容 在submit前验证 如果有问题 返回false就不提交了。。
    谁有好的方法让它简化简化。。又长又大 又不利于维护。
      

  2.   

    var g=function(id){return document.getElementById(id)}
      

  3.   

    其他方面 还能优化吗?这个能减少大小 但是长度不见少啊function aaa(id){return document.getElementById(id)}
    var thecontrol=aaa("txtFcTripMeter");
     if (thecontrol.value< 1 )
                   {    thecontrol.innerHTML="里程数不能为负";
                        document.getElementById("txtFcTripMeter").focus();
                        return  false  ;
                   }是这个意思吧
      

  4.   

    写个公共函数参数valiate(id,reg,tip)封装一下
      

  5.   

    http://kb.cnblogs.com/a/500871/这种方法是不是用到jQuery
      

  6.   

    同意归纳一下就能优化参考:
    var invalidates = 
    [
    ["txtFcRefuelDateTime", "lblFcRefuelDateTime", /^\d{4}-\d{2}-\d{2}$/, "日期不能为空"], 
    ["txtFcRefuel", "lblFcRefuel", /^[0-9]+([.]\d{1,2})?$/, "请输入数字(例:0.00),最高保留两位小数"], 
    ["txtFcTripMeter", "lblFcTripMeter", /^[0-9]+([.]\d{1,2})?$/, "请输入数字(例:0.00),最高保留两位小数"]
    ];function $(id) { return document.getElementById(id); }for (var i = 0; i < invalidates.length; i++) {
    $(invalidates[i][1]).innerHTML = "";
    if (invalidates[i][2].test($(invalidates[i][0]).value) {
    $(invalidates[i][1]).innerHTML = invalidates[i][3];
    $(invalidates[i][0]).focus();
    break;
    }
    }
      

  7.   

    function $(id) { return document.getElementById(id); }
    为什么要加个 $的符号?
      

  8.   

    $只是一个自定义的函数名,你可以定义“fromID、gebi、a”,定义为$主要是大多数人的习惯。估计是受到jquery的影响。不定义也可以,直接用document.getElementById,可以理解为$就是document.getElementById的简写。(jquery除外)
    for (var i = 0; i < invalidates.length; i++) {
        document.getElementById(invalidates[i][1]).innerHTML = "";
        if (invalidates[i][2].test(document.getElementById(invalidates[i][0]).value) {
            document.getElementById(invalidates[i][1]).innerHTML = invalidates[i][3];
            document.getElementById(invalidates[i][0]).focus();
            break;
        }
    }一个常用方法,使用简写可以减少代码的字节,节省一点带宽。
      

  9.   

    改了几个,LZ看下合不合适... - -! function $(id){
    return document.getElementById(id);
    }
    function msg(lblId, msg, txtId){
    $(lblId).innerHTML = msg;
    $(txtId).focus();
    return false;
    }
    function invalidate() {
    //日期不能为空
    $("lblFcRefuelDateTime").innerHTML = "";
    if ($("txtFcRefuelDateTime").value == '') {
    return msg("lblFcRefuelDateTime", "日期不能为空", "txtFcRefuelDateTime");
    } //txt只读 没什么用了
    if (result = /^\d{4}-\d{2}-\d{2}$/.test($("txtFcRefuelDateTime"))) {
    return msg("lblFcRefuelDateTime", "请填写正确的加油日期", "txtFcRefuelDateTime");
    }
    //不能大于今天的日期
    var textTime = new Date($("txtFcRefuelDateTime").value.replace(/-/g, "//"));
    if (textTime > new Date()) {
    return msg("lblFcRefuelDateTime", "日期不能大于今天", "txtFcRefuelDateTime");
    }
    $("lblFcRefuelDateTime").innerHTML = "";
    //不能小于 上一条记录日期
                      ......