• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JavaScript在ASP页面中实现掩码文本框效果代码
    最近在做一个程序正好需要用到此方面,在网上找到过相应的程序,但用起来都非常恶,于是乎只好自己实现一个了。
      首先实现两个函数用来操作光标:
    复制代码 代码如下:

      // 得到一个文本框控件的当前光标位置
      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掩码框
    复制代码 代码如下:

      input name="i_bip" type="text" id="i_bip" value="{I_BIP}" maxlength="15" onkeydown="mask(i_bip, '^([0-9]{0,3}[\.][0-9]{0,3}[\.][0-9]{0,3}[\.][0-9]{0,3})$')">
    您可能感兴趣的文章:
    • php进行ip地址掩码运算处理的方法
    • js验证IP及子网掩码的合法性有效性示例
    • js针对ip地址、子网掩码、网关的逻辑性判断
    • JS验证IP,子网掩码,网关和MAC的方法
    • PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
    • php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
    • PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
    • php将字符串转换成16进制的方法
    • PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
    • php和js实现根据子网掩码和ip计算子网功能示例
    上一篇:手写个小组件(组件入门)asp版
    下一篇:asp经典入门教程 在ASP中使用SQL 语句第1/2页
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JavaScript在ASP页面中实现掩码文本框效果代码 JavaScript,在,ASP,页面,中,