好用
------------------
没有屏蔽Delete键

解决方案 »

  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);
    }
    }
    window.event.returnValue=false;
    }
    替换原文中该函数
      

  2.   

    window.event.returnValue=false;
    这是你新加的吧. 加了这句代码之后, 没法子输入了!!
      

  3.   

    sorry,没仔细想想就发上来了,最后一句 window.event.returnValue=false;
    换成:
    if(code==46) event.returnValue=false;
      

  4.   

    <!--作者:梅雪香(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>
      

  5.   

    测试了,不错
    checkDate()
    函数是写 检验输入的数据合法性的吧,自己写?
    为什么不干脆把日期的合法性验证写进去呢,比如 闰年的判断,时间有效格式的判断
      

  6.   

    如果#换成空白可能更容易接受些
    不过偶觉得这个似乎没有太大用处啊
    因为偶一般都是点击弹出CALENDAR控件直接选日期的不用手工输入