类似于PB的editmask的可自行设置mask的输入控件,大家帮我测一下,并给出测试环境和bug,谢谢 好用------------------没有屏蔽Delete键 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); } } window.event.returnValue=false;}替换原文中该函数 window.event.returnValue=false;这是你新加的吧. 加了这句代码之后, 没法子输入了!! sorry,没仔细想想就发上来了,最后一句 window.event.returnValue=false;换成: if(code==46) event.returnValue=false; <!--作者:梅雪香(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> 测试了,不错checkDate()函数是写 检验输入的数据合法性的吧,自己写?为什么不干脆把日期的合法性验证写进去呢,比如 闰年的判断,时间有效格式的判断 如果#换成空白可能更容易接受些不过偶觉得这个似乎没有太大用处啊因为偶一般都是点击弹出CALENDAR控件直接选日期的不用手工输入 HTML嵌入SWF能缩小SWF的大小吗? 各位前辈,有问题需要大家帮助 ,谢谢 动态幻灯广告图片如何实现? 函数调用问题 一个正则表达式的写法 $('#sub').html() 无法加载div嵌套html的内容。 js如何提取?后的参数 我现在在改一个邮件服务器,已有摸板了,功能也实现了,现在要改界面,什么方法好啊! 关于prototype的一点疑惑 Easyui的combobox怎么获取click事件,让点击就弹出下拉框而不仅仅是点击倒三角才弹出 一种特殊的文字滚动效果,在线急等!!! 如何取值,再线等待!!!!
{
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);
}
}
window.event.returnValue=false;
}
替换原文中该函数
这是你新加的吧. 加了这句代码之后, 没法子输入了!!
换成:
if(code==46) event.returnValue=false;
时间: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>
checkDate()
函数是写 检验输入的数据合法性的吧,自己写?
为什么不干脆把日期的合法性验证写进去呢,比如 闰年的判断,时间有效格式的判断
不过偶觉得这个似乎没有太大用处啊
因为偶一般都是点击弹出CALENDAR控件直接选日期的不用手工输入