javascript在ASP中实现掩码文本框

2016-01-29 18:51 1 1 收藏

javascript在ASP中实现掩码文本框,&#106avascript在ASP中实现掩码文本框

【 tulaoshi.com - ASP 】

 

  在网页中输日期、时间、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;
  }

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

  }
 
  其它的任何消息都当添加一个字符,可见不可见的字符,都将添加并光标往后走一下。见上方的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

来源:https://www.tulaoshi.com/n/20160129/1507524.html

延伸阅读
标签: ASP
  <html <head <meta http-equiv="Content-Type" content="text/html; charset=gb2312" <titleASP源程序查看器</title <style.f{font-size:9pt}</style <script //程序作者:虹雨 chy.126.com var autotop=new Array() autotop[1]="" autotop[2]="" autotop[3]="&...
  原代码插入到<body下面:<script language="JavaScript" <!-- N = 40; Y = new Array(); X = new Array(); S = new Array(); A = new Array(); B = new Array(); M = new Array(); V = (document.layers)?1:0; iH=(document.layers)?window.innerHeight:window.document.body.clientHeight; iW=(document.layers)?win...
标签: ASP
  预先读取图片的方法是比较简单的,用javascript这样实现。 将如下的类似代码放在HTML的<head区: <SCRIPT LANGUAGE="JavaScript" <!-- Image1= new Image(100,50) Image1.src = "image1.gif" Image2 = new Image(100,50) Image2.src = "image2.gif" Image3 = new Image(100,50) Image3.src = ...
  随着互联网的飞速发展,地球变得越来越小,人们可以跨越时间和空间得界限进行交流于合作。但是随之也产生了一些肆意搞破坏的黑客,这就使得程序设计人员在编制应用程序中要考虑到黑客袭击这个问题,所以自然而然地就会想到保护。本节教程将教你怎样利用Javascript进行密码保护。利用JavaScript来对网页进行密码保护有几种方法。最早...
标签: ASP
  作者:平凡点滴【一凡】 <HTML <HEAD <META NAME="AUTHOUR" Content="DANNY KANG" <META NAME="CreateDate" Content="2004-10-28" <META NAME="Keywords" Content="DANNY KANG,DannyKang,DK,[D.K],pizz" <META http-equiv=content-type content="text/html; charset=gb2312" <SCRIPT language=javascript //'+---...

经验教程

881

收藏

93
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部