子魚@NET

渤海子魚的BLOG

用户操作
[即时聊天] [发私信] [加为好友]
渤海子魚ID:ffyd2000
13966次访问,排名8378好友14人,关注者17
小二
ffyd2000的文章
原创 18 篇
翻译 0 篇
转载 21 篇
评论 3 篇
渤海子魚的公告
人生就像在风中扫落叶,只是顾着清扫眼前的落叶那是不会顺利的,如果顺着风向堆积落叶的话,那就会变得很轻松了.事物不能光用眼睛看,感觉也是很重要的,仅仅拘泥于眼前的事物,忽略其他的东西也是不行的.抛下邪念,接受现状,这才是所谓的领悟
最近评论
psnccs:WoW Gold
farmer_chs:转贴
SOW觉得文章哪里有问题呢?
SOW:没有搞过PHP不要把别人写的拿来乱说
文章分类
收藏
相册
MY PHOTOS
CD CSDNer
billy
Nosound
小新(RSS)
木头
牛蛙
白云
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 类似于PB的editmask的可自行设置mask的输入控件收藏

新一篇: ECC加密算法入门介绍 | 旧一篇: img动态大小

类似于PB的editmask的可自行设置mask的输入控件

input.htm

<html>
<head>
<title>格式化输入控件 code by meixx</title>
<style type="text/css">
.txtMask{ background-color:#FFFFCC; behavior: url(meixx.htc);}
</style>
<script language="JavaScript">
<!--
//-->
</script>
</head>
<body >
<table cellpadding=0 cellspacing=0 border=1 width="100%">
 <tr height="200">
  <td>
   <H4>格式化输入控件</h4>
   <p>模式:##-###-########</P>
   <p>说明:可自行更改输入的格式,但只能用#作为输入部分(暂时只能输入数字),分隔部分字符不限!</P>
   <p>&nbsp;&nbsp;&nbsp;&nbsp;合法检查函数根据需要自己完成</P>
   <p>引用方法: &lt;input type="text" check="date"  mask="####-##-## ##:##" class="txtMask"....&gt;</P>
   <p>css样式: .txtMask{ background-color:#FFFFCC; behavior: url(meixx.htc);}
</P>
   <p>code by meixx</P>
   <p>2005-04-06</P>
   <br><br>
  </td>
 </tr>
 <tr>
  <td>
   日期时间输入:<input type="text" name="txtMask" check="date" id="txtMask" mask="####-##-## ##:##" size=20 class="txtMask">&nbsp;&nbsp;&nbsp;&nbsp;
   例如可输入:2005-04-06 15:00
  </td>
 </tr>
</table>
</body>
</html>
********************************************************
//meixx.htc

<!--

作者:梅雪香(meixx)
时间:2005-04-61
描述:格式化输入控件
-->

<!--
接口定义
-->
<public:component>
 <public:property name="description"    value="Mask Input Behavior" />
 <public:property name="version"     value="1.0.0.0" />

 <public:attach  event="oncontentready"   onevent="init()"   />
 <public:attach  event="onselectstart"   onevent="eventCancel()" />
 <public:attach  event="onkeypress"   onevent="keyPress()" />
 <public:attach  event="onkeydown"   onevent="keyDown()" />
 <public:attach  event="onPaste"   onevent="eventCancel()" />
 <public:attach  event="onFocus"   onevent="doFocus()" />
 <public:attach  event="onclick"   onevent="doFocus()" />
 <public:attach  event="ondblclick"   onevent="doFocus()" />
 <public:attach  event="onblur"   onevent="doCheck()" />

 <public:method  name="getCursorPos" />
 <public:method  name="setCursorPos" />
 <public:method  name="movCursorNext" />
 <public:method  name="IsNumber" />
</public:component>

<!--
组件实现
-->
<script language="javascript">
var mask=element.mask;
//内部函数,事件oncontentready,初始化
function init()
{
 //alert();
 element.value=mask;
 element.maxLength=mask.length;
}
function keyPress()
{
 //如果输入不是数字,返回
 var keyNum=String.fromCharCode(event.keyCode)
 if(!IsNumber(keyNum)) return  false;
 writeNum(keyNum,1);
 var curPos=getCursorPos();
 if(mask.charAt(curPos)!="#"){
  MoveCursor(1);
 }
}
function keyDown()
{
 var e=window.event;
 var code=e.keyCode;
// alert(code);
 if(code==8 || code==37 || code==39){
  var curPos=getCursorPos();
  if(code==8){ //退格时替换内容
   if(mask.charAt(curPos-1)!="#")
    MoveCursor(-1);
   curPos=getCursorPos();
   writeNum(mask.charAt(curPos-1),-1);
   window.event.returnValue=false;
   MoveCursor(-1);
  }
  else{
   if(code==37 && mask.charAt(curPos-1)!="#")
    MoveCursor(-1);
   else if(code==39 && mask.charAt(curPos+1)!="#")
    MoveCursor(1);
  }
 }
 if(code==46) window.event.returnValue=false;
}
//替换文本框中光标所在位置的下一个或上一个字符为输入值或默认的初始值
//flag 1:输入 -1: 退格
function writeNum(keyNum,flag)
{
 var rng=document.selection.createRange();
 if(flag>0)
  rng.moveEnd("character",flag);
 else
  rng.moveStart("character",flag);
 //alert(rng.text);
 rng.text=keyNum;
}
//取得当前光标位置
function getCursorPos()
{
 var len=mask.length;
 var pos=0;
 var rng=document.selection.createRange();
 rng.moveEnd("character",len);
 try{
  pos=len-rng.text.length
 }catch(e){}
 return pos;
}
//向前或向后移动光标一位 flag  1:向前   -1 :向后
function MoveCursor(flag)
{
 var rng =element.createTextRange();
 rng.moveStart("character",getCursorPos()+flag);
 rng.collapse(true);
 rng.select();
}
//判断keypress事件输入是否为数字true:是 false:不是
function IsNumber(keyNum)
{
 return !isNaN(parseInt(keyNum));
}
//取消事件
function eventCancel()
{
 with (window.event)
 {
   cancelBubble = true ;
   returnValue = false ;
 }
 return false ;
}
//获得焦点事件
function doFocus()
{
 if(mask.charAt(getCursorPos())!="#")
  MoveCursor(1);
}
//统一的检查函数
function doCheck()
{
 //根据需要检查录入的内容是否合法
 switch(element.check){
  case "date": checkDate(); break;
  default: return;
 }
}
function checkDate()
{

}
</script>

放在一个目录下即可运行

发表于 @ 2005年04月08日 23:15:00|评论(loading...)|编辑

新一篇: ECC加密算法入门介绍 | 旧一篇: img动态大小

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © 渤海子魚