javascript函数库

来源:互联网 发布:淘宝联盟激活推广位 编辑:程序博客网 时间:2024/04/30 14:41

/*

--------------
函数检索 --------------
trim
函数:                         trim() lTrim() rTrim()
校验字符串是否为空:                 checkIsNotEmpty(str)
校验字符串是否为整型:               checkIsInteger(str)
校验整型最小值:                    checkIntegerMinValue(str,val)
校验整型最大值:                    checkIntegerMaxValue(str,val)
校验整型是否为非负数:               isNotNegativeInteger(str)
校验字符串是否为浮点型:             checkIsDouble(str)
校验浮点型最小值:                  checkDoubleMinValue(str,val)
校验浮点型最大值:                  checkDoubleMaxValue(str,val)
校验浮点型是否为非负数:             isNotNegativeDouble(str)
校验字符串是否为日期型:             checkIsValidDate(str)
校验两个日期的先后:                checkDateEarlier(strStart,strEnd)
校验字符串是否为email:           checkEmail(str)

校验字符串是否为中文:               checkIsChinese(str)
计算字符串的长度,一个汉字两个字符:   realLength()
校验字符串是否符合自定义正则表达式:   checkMask(str,pat)
得到文件的后缀名:                   getFilePostfix(oFile) 
--------------
函数检索 --------------
*/

/**
* added by LxcJie 2004.6.25
*
去除多余空格函数
* trim:
去除两边空格 lTrim:去除左空格 rTrim: 去除右空格
*
用法:
*     var str = "  hello ";
*     str = str.trim();
*/
String.prototype.trim = function()
{
    return this.replace(/(^[/s]*)|([/s]*$)/g, "");
}
String.prototype.lTrim = function()
{
    return this.replace(/(^[/s]*)/g, "");
}
String.prototype.rTrim = function()
{
    return this.replace(/([/s]*$)/g, "");
}
/********************************** Empty **************************************/
/**
*
校验字符串是否为空
*
返回值:
*
如果不为空,定义校验通过,返回true
*
如果为空,校验不通过,返回false               参考提示信息:输入域不能为空!
*/
function checkIsNotEmpty(str)
{
    if(str.trim() == "")
        return false;
    else
        return true;
}//~~~
/*--------------------------------- Empty --------------------------------------*/
/********************************** Integer *************************************/
/**
*
校验字符串是否为整型
*
返回值:
*
如果为空,定义校验通过,      返回true
*
如果字串全部为数字,校验通过,返回true
*
如果校验不通过,              返回false     参考提示信息:输入域必须为数字!
*/
function checkIsInteger(str)
{
    //
如果为空,则通过校验
    if(str == "")
        return true;
    if(/^(/-?)(/d+)$/.test(str))
        return true;
    else
        return false;
}//~~~
/**
*
校验整型最小值
*str
:要校验的串。  val:比较的值
*
*
返回值:
*
如果为空,定义校验通过,                返回true
*
如果满足条件,大于等于给定值,校验通过,返回true
*
如果小于给定值,                        返回false              参考提示信息:输入域不能小于给定值!
*/
function checkIntegerMinValue(str,val)
{
    //
如果为空,则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)>=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*
校验整型最大值
*str
:要校验的串。  val:比较的值
*
*
返回值:
*
如果为空,定义校验通过,                返回true
*
如果满足条件,小于等于给定值,校验通过,返回true
*
如果大于给定值,                        返回false       参考提示信息:输入值不能大于给定值!
*/
function checkIntegerMaxValue(str,val)
{
    //
如果为空,则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)<=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*
校验整型是否为非负数
*str
:要校验的串。
*
*
返回值:
*
如果为空,定义校验通过,返回true
*
如果非负数,            返回true
*
如果是负数,            返回false               参考提示信息:输入值不能是负数!
*/
function isNotNegativeInteger(str)
{
    //
如果为空,则通过校验
    if(str == "")
        return true;
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Integer --------------------------------------*/
/********************************** Double ****************************************/
/**
*
校验字符串是否为浮点型
*
返回值:
*
如果为空,定义校验通过,      返回true
*
如果字串为浮点型,校验通过,  返回true
*
如果校验不通过,              返回false     参考提示信息:输入域不是合法的浮点数!
*/
function checkIsDouble(str)
{
    //
如果为空,则通过校验
    if(str == "")
        return true;
    //
如果是整数,则校验整数的有效性
    if(str.indexOf(".") == -1)
    {
        if(checkIsInteger(str) == true)
            return true;
        else
            return false;
    }
    else
    {
        if(/^(/-?)(/d+)(.{1})(/d+)$/g.test(str))
            return true;
        else
            return false;
    }
}//~~~
/**
*
校验浮点型最小值
*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://www.51windows.net/myjs/

window.close
关闭窗口,如何可以不弹出系统提示,直接关闭
        private void btnClose_Click(object sender, System.EventArgs e)
        {
            Response.Write("<script language=javascript>window.opener=null;window.close() ;</script>");
        }
如果是通过子窗体关闭父窗体时怎么做呢, 子窗体(弹出窗体):
            Response.Write("<script>window.opener.top.opener=null;window.opener.top.close()</script>")

 

JavaScriptASP中实现掩码文本框

来源:潇潇雨吧 时间:2004-12-3 13:22:38 点击: 票数:41 点击:488  

 

  在网页中输日期、时间、IP地址等需要一定的格式限制,否则将会程序将会很难和程序沟通。
  最近在做一个程序正好需要用到此方面,在网上找到过相应的程序,但用起来都非常恶,于是乎只好自己实现一个了。

  首先实现两个函数用来操作光标:


 
  // 得到一个文本框控件的当前光标位置
  function getPos(obj)
  {
  obj.focus();
  var workRange=document.selection.createRange();
  obj.select();
  var allRange=document.selection.createRange();
  workRange.setEndPoint("StartToStart",allRange);
  var len=workRange.text.length;
  workRange.collapse(false);
  workRange.select();
  return len;
  }
 

 

   // 设置一个文本框控件的当前光标位置
  function setCursor(obj,num){
  range=obj.createTextRange();
  range.collapse(true);
  range.moveStart('character',num);
  range.select();
  }
 


  主要函数实现的主要思想是当键盘按下时进行一些操作,我设计在OnKeyDown事件中。

  在OnKeyDown中,首先将系统默认的键盘处理屏蔽掉

   // 封住传统处理
  window.event.returnValue = false;

  然后处理相应需要处理的键盘消息。
  这里随便处理几个必要的就可以了,因为文本框本身也不需要什么太多的用户操作,所以把光标的前移、后移、删除操作进行处理,这样你的文本框就有了基本的操作,现在操作起来已经很顺手了。

   // 自行处理按钮
  switch (nKeyCode)
  {
  case 8:// 如果动作是退格[<-]
  {
  strText =  strText.substr(0,nCursorPos-1) + strText.substr(nCursorPos, nTextLen-nCursorPos);
  nCursorPos--;
  break;
  }
  case 46:// 如果动作是del[del]
  {
  strText =  strText.substr(0,nCursorPos) + strText.substr(nCursorPos+1,nTextLen-nCursorPos-1);
  nCursorPos--;
  break;
  }
  case 38:// 如果动作是方向键[]
  case 39:// 如果动作是方向键[]
  {
  nCursorPos++;
  break;
  }

case 37:// 如果动作是方向键[]
  case 40:// 如果动作是方向键[]
  {
  nCursorPos--;
  break;
  }
  default :
  {
  strText =  strText.substr(0,nCursorPos) + String.fromCharCode(nKeyCode) + strText.substr(nCursorPos,nTextLen);
  nCursorPos++;
  if (nCursorPos>strText.length)
  {
  nCursorPos=strText.length;
  }
  break;
  }

  }
 
  其它的任何消息都当添加一个字符,可见不可见的字符,都将添加并光标往后走一下。见上方的default 处理部份。

  然后判断掩码是否正确,如果正确,那么此次输入合法,将值显示添加到文本框中。

   if (strText.match(expMask))
  {
  // 输入格式正确
  objTextBox.value = strText;
  }
  最后将光标移到适当的位置。  
  

   // 移动光标
  setCursor(objTextBox,nCursorPos);
  完成!

  其主要就是把系统的键盘消息替换成自己的处理,屏蔽掉系统的,这样就可以获得最大的操控。
  如此就完成了一个对指定的正则表达式进行格式限制的TEXTBOX就诞生了。

  附完整代码:


 
  // 根据指定正表达式,来控制OBJ表示
  function mask(objTextBox,mask)
  {
  // 掩码
  expMask = new RegExp(mask);
  // 当前文本框中的文本
  var strText =objTextBox.value;
  // 文本长度
  var nTextLen=strText.length;

  // 当前光标位置
  var nCursorPos=getPos(objTextBox);

  // 按下的键码
  var nKeyCode = window.event.keyCode;
  if (nKeyCode > 95) nKeyCode -= (95-47);

  // 封住传统处理
  window.event.returnValue = false;
 
  // 自行处理按钮
  switch (nKeyCode)
  {
  case 8:// 如果动作是退格[<-]
  {
  strText =  strText.substr(0,nCursorPos-1) + strText.substr(nCursorPos, nTextLen-nCursorPos);
  nCursorPos--;
  break;
  }
  case 46:// 如果动作是del[del]
  {
  strText =  strText.substr(0,nCursorPos) + strText.substr(nCursorPos+1,nTextLen-nCursorPos-1);
  nCursorPos--;
  break;
  }
  case 38:// 如果动作是方向键[]
  case 39:// 如果动作是方向键[]
  {
  nCursorPos++;
  break;
  }
  case 37:// 如果动作是方向键[]
  case 40:// 如果动作是方向键[]
  {
  nCursorPos--;
  break;
  }
  default :
  {
  strText =  strText.substr(0,nCursorPos) + String.fromCharCode(nKeyCode) + strText.substr(nCursorPos,nTextLen);
  nCursorPos++;
  if (nCursorPos>strText.length)
  {
  nCursorPos=strText.length;
  }
  break;
  }

  }

  if (strText.match(expMask))
  {
  // 输入格式正确
  objTextBox.value = strText;
  }

  // 移动光标
  setCursor(objTextBox,nCursorPos);
  }

  // 得到一个文本框控件的当前光标位置
  function getPos(obj)
  {

   obj.focus();
  var workRange=document.selection.createRange();
  obj.select();
  var allRange=document.selection.createRange();
  workRange.setEndPoint("StartToStart",allRange);
  var len=workRange.text.length;
  workRange.collapse(false);
  workRange.select();
  return len;
  }

  // 设置一个文本框控件的当前光标位置
  function setCursor(obj,num){
  range=obj.createTextRange();
  range.collapse(true);
  range.moveStart('character',num);

  range.select();
  }
 

  使用方法:

  1.设置默认的、不定的格式初值。如:日期时间的格式初值为“// ::”,表示(//日 时::)IP的为“...”192.168.0.1)。其实就是设置一个不会违反正则表达式的字符就可以。

  2.在表单的TEXT框的OnKeyDown事件中调用mask函数,参数objTextBox是指定的文本框的name。参数mask是正则表达式格式的掩码。

  例子:

  要使用日期时间型的掩码框


 
  <input name="i_etmend" type="text" id="i_etmend" value="{I_ETMEND}" maxlength="19"  onkeydown="mask(i_etmend, '^(([0-9]{0,4})/-([0-9]{0,2})/-([0-9]{0,2}) ([0-9]{0,2}):([0-9]{0,2}):([0-9]{0,2}))$')">

  要使用IP掩码框

 

原创粉丝点击