/**
*校验浮点型最小值
*str:要校验的串。  val:比较的值
*
*返回值:
*如果为空,定义校验通过,                返回true
*如果满足条件,大于等于给定值,校验通过,返回true
*如果小于给定值,                        返回false              参考提示信息:输入域不能小于给定值!
*/
function checkDoubleMinValue(str,val)
{
    //如果为空,则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)>=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型最大值
*str:要校验的串。  val:比较的值
*
*返回值:
*如果为空,定义校验通过,                返回true
*如果满足条件,小于等于给定值,校验通过,返回true
*如果大于给定值,                        返回false       参考提示信息:输入值不能大于给定值!
*/
function checkDoubleMaxValue(str,val)
{
    //如果为空,则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)<=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型是否为非负数
*str:要校验的串。
*
*返回值:
*如果为空,定义校验通过,返回true
*如果非负数,            返回true
*如果是负数,            返回false               参考提示信息:输入值不能是负数!
*/
function isNotNegativeDouble(str)
{
    //如果为空,则通过校验
    if(str == "")
        return true;
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Double ---------------------------------------*/
/********************************** date ******************************************/
/**
*校验字符串是否为日期型
*返回值:
*如果为空,定义校验通过,           返回true
*如果字串为日期型,校验通过,       返回true
*如果日期不合法,                   返回false    参考提示信息:输入域的时间不合法!(yyyy-MM-dd)
*/
function checkIsValidDate(str)
{
    //如果为空,则通过校验
    if(str == "")
        return true;
    var pattern = /^((d{4})|(d{2}))-(d{1,2})-(d{1,2})$/g;
    if(!pattern.test(str))
        return false;
    var arrDate = str.split("-");
    if(parseInt(arrDate[0],10) < 100)
        arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
    var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
    if(date.getYear() == arrDate[0]
       && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
       && date.getDate() == arrDate[2])
        return true;
    else
        return false;
}//~~~
/**
*校验两个日期的先后
*返回值:
*如果其中有一个日期为空,校验通过,          返回true
*如果起始日期早于等于终止日期,校验通过,   返回true
*如果起始日期晚于终止日期,                 返回false    参考提示信息: 起始日期不能晚于结束日期。
*/
function checkDateEarlier(strStart,strEnd)
{
    if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false)
        return false;
    //如果有一个输入为空,则通过检验
    if (( strStart == "" ) || ( strEnd == "" ))
        return true;
    var arr1 = strStart.split("-");
    var arr2 = strEnd.split("-");
    var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
    var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
    if(arr1[1].length == 1)
        arr1[1] = "0" + arr1[1];
    if(arr1[2].length == 1)
        arr1[2] = "0" + arr1[2];
    if(arr2[1].length == 1)
        arr2[1] = "0" + arr2[1];
    if(arr2[2].length == 1)
        arr2[2]="0" + arr2[2];
    var d1 = arr1[0] + arr1[1] + arr1[2];
    var d2 = arr2[0] + arr2[1] + arr2[2];
    if(parseInt(d1,10) > parseInt(d2,10))
       return false;
    else
       return true;
}//~~~
/*--------------------------------- date -----------------------------------------*/
/********************************** email *****************************************/
/**
*校验字符串是否为email型
*返回值:
*如果为空,定义校验通过,           返回true
*如果字串为email型,校验通过,      返回true
*如果email不合法,                  返回false    参考提示信息:Email的格式不正確!
*/
function checkEmail(str)
{
    //如果为空,则通过校验
    if(str == "")
        return true;
    if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf('@', 0) == -1
        || str.indexOf('.', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1)
        return false;
    else
        return true;
}//~~~
/*--------------------------------- email ----------------------------------------*/
/********************************** chinese ***************************************/
/**
*校验字符串是否为中文
*返回值:
*如果为空,定义校验通过,           返回true
*如果字串为中文,校验通过,         返回true
*如果字串为非中文,             返回false    参考提示信息:必须为中文!
*/
function checkIsChinese(str)
{
    //如果值为空,通过校验
    if (str == "")
        return true;
    var pattern = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/gi;
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/**
* 计算字符串的长度,一个汉字两个字符
*/
String.prototype.realLength = function()
{
  return this.replace(/[^x00-xff]/g,"**").length;
}
/*--------------------------------- chinese --------------------------------------*/
/********************************** mask ***************************************/
/**
*校验字符串是否符合自定义正则表达式
*str 要校验的字串  pat 自定义的正则表达式
*返回值:
*如果为空,定义校验通过,           返回true
*如果字串符合,校验通过,           返回true
*如果字串不符合,                   返回false    参考提示信息:必须满足***模式
*/
function checkMask(str,pat)
{
    //如果值为空,通过校验
    if (str == "")
        return true;
    var pattern = new RegExp(pat,"gi")
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/*--------------------------------- mask --------------------------------------*/
/********************************** file ***************************************/
/**
* added by LxcJie 2004.6.25
* 得到文件的后缀名
* oFile为file控件对象
*/
function getFilePostfix(oFile)
{
    if(oFile == null)
        return null;
    var pattern = /(.*).(.*)$/gi;
    if(typeof(oFile) == "object")
    {
        if(oFile.value == null || oFile.value == "")
            return null;
        var arr = pattern.exec(oFile.value);
        return RegExp.$2;
    }
    else if(typeof(oFile) == "string")
    {
        var arr = pattern.exec(oFile);
        return RegExp.$2;
    }
    else
        return null;
}//~~~
/*--------------------------------- file --------------------------------------*/ 
转http://blog.chinaunix.net/u/23783/showart_219111.html

解决方案 »

  1.   

    哈哈, 俺也有...改天散散, 不过俺的分 prototype && jscript && javascript 三个库...
      

  2.   

    有些函数写得太复杂,太罗嗦了比如 function getFilePostfix(oFile)可以写成这样:
    function getFilePostfix(oFile){
        try{return oFile.value.split(".")[1] || null}catch(x){return null}
    }比如  checkIsValidDate  //检查是否 yyyy-mm-dd格式
    function checkIsValidDate(value){
        try{
    var arr=(value.length==String("yyyy-mm-dd").length)?value.split("-"):[]
    --arr[1]
    eval("var d=new Date("+arr.join(",")+")")
    return Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth() && Number(arr[2])==d.getDate()
        }catch(x){return false}
    }
    比如:  checkDateEarlier(strStart,strEnd)  //比较日期早晚function checkDateEarlier(strStart,strEnd){
        if(!checkIsValidDate(strStart)|| !checkIsValidDate(strEnd)) return false;
        if(!strStart.length || !strEnd.length) return true;
        var f=function(s){var arr=s.split("-");return new Date(Number(arr[0]),--Number(arr[1]),Number(arr[2]))}
        return f(strStart)>f(strEnd)
    }
      

  3.   

    嘻嘻, 这个作者不懂 Object.prototype, 
    要不然可以N简洁
      

  4.   

    得,请不要污染 Object !
      

  5.   

    请赐教, Object 怎么个用法.
    原闻其详...
      

  6.   

    你使用了 Object.prototype 的这种方法来扩展,确实可以给你的代码带来很多便利,但是这样的话:
    var e = new Object();
    for(var i in e) ;
    这样势必会把你的所有扩展都遍历出来,而我只想要一个干干净净的 Object, prototype.js 这个框架在它的低版本里也是使用你这种直接扩展 Object 的模式,但现在的版本都已经改过来了。至于为什么需要一个干净的 Object ,随着你自己的脚本写深入了就会体会到了。
      

  7.   

    嘻嘻, 我弄框架的愿意就是减少冗余, 我的服务端JS框架已经解决冗余和效率问题了, 需要的话调用一下就OK....
    客户端框架还在设计中...prototype.js 那种方法不是我要的, 把脚本都放在一个文件里干吗, 冗余...谢谢回复.
      

  8.   

    把脚本放在文件里面是为了不是每次都下载,加快速度哟
    ----------- 
    btbtd(點點點...) ( ) 信誉:100    Blog  2006-12-28 20:06:03  得分: 0  
    把脚本都放在一个文件里干吗, 冗余...
      

  9.   

    现在就想了解一下。。老法师解释一下
    ---
    至于为什么需要一个干净的 Object ,随着你自己的脚本写深入了就会体会到了。
      

  10.   

    对javaspript不熟悉   复制  等着接分吧