选择显示字体大小

javascript在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;
    }
  
  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})$')">
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons