这段代码只是一个尝试, 不知能否帮上你的忙<input type=text name=ddd maxlength=10 size=10
 onkeyup=cc(this) onfacos=ff() onpaste="return false;"><script language=Javascript>
function ff() //控制光标位置
{
  var e = event.srcElement;
  var r =e.createTextRange();
  r.moveStart('character',e.value.length);
  r.collapse(true);
  r.select();
}
function cc(tt)
{
  if(!(event.keyCode==8 || event.keyCode==46)){ //允许删除
  switch (tt.value.length){
     case 4 :
        tt.value = tt.value+"-"
        break;
     case 7 :
        tt.value = tt.value+"-"
        break;
     }
  }
  tt.focus();
}
</script>

解决方案 »

  1.   

    多谢!有用,我还想请教meizz(梅花雨),如何可以在输入后可以替换已经存在的字符,我见过这样的功能,但是我不太明白,请赐教!
      

  2.   

    <script language=Javascript>
    function ff() //控制光标位置
    {
      var e = event.srcElement;
      var r =e.createTextRange();
      r.moveStart('character',e.value.length);
      r.collapse(true);
      r.select();
    }
    function cc(tt)
    {
      if(!(event.keyCode==8 || event.keyCode==46)){ //允许删除
      switch (tt.value.length){
         case 4 :
            tt.value = tt.value+"-"
            break;
         case 7 :
            tt.value = tt.value+"-"
            break;
     case 10 :
            tt.value = tt.value+" "
         break;
     case 13 :
            tt.value = tt.value+":"
         break;
         }
      }
      tt.focus();
    }
    </script>
    <input name=time type=text onkeyup=cc(this) value="0000-00-00 00:00" onClick="this.value = ''" size="18" maxlength="16" onfacos=ff() onpaste="return false;">
    我有一种想法,就是能不能在onkeyup的时候将光标后面的字符删除!
      

  3.   

    <script language=Javascript>
    function objFocus(n) //控制光标选中光标后一字符
    {
        if (arguments.length == 0) var n=0;
        var e = window.event.srcElement;
        var r = e.createTextRange();
        r.moveStart('character', n);
        r.collapse(true);
        r.select();
        var s = document.selection.createRange().duplicate().duplicate();
        s.moveStart('character', 1);
        s.setEndPoint("EndToEnd", r);
        s.select();
    }
    function keyPress(e) //手工输入日期
    {
        var k       = String.fromCharCode(window.event.keyCode);
        if(!/^\d/.test(k)) return false; //不准输入非法字符    e.focus();
        var range   = e.createTextRange();
        var select1 = document.selection.createRange().duplicate();
        select1.setEndPoint("StartToStart",range);    var s1      = select1.text;                 //得到光标左边的字串
        var s2      = e.value.substr(s1.length);    //得到光标右边的字串
        e.value     = s1.substring(0, s1.length-1) + k + s2; //给文本框赋值    var n       = s1.length;
        if (n==4 || n==7 || n==10 || n==13) n++;
        objFocus(n);    window.event.keyCode = 0;
        event.returnValue = false;
    }
    function keyDown(e)  //删除回退按方向键时的处理
    {
        var k   = window.event.keyCode;
        if (!(k>=48 && k<=57    //数字0-9
            || k==46            //删除键 Del
            || k==8             //回删链 Backspace
            || k==37            //方向链 ←
            || k==39            //方向键 →
            || k==9             //制表键 Tab
            || k==13            //回车键 Enter
            )) return false;    //屏蔽非上面所列的键
            e.focus();    var range   = e.createTextRange();
        var select1 = document.selection.createRange().duplicate();
        select1.setEndPoint("StartToStart",range);    var s1      = select1.text;                 //得到光标左边的字串
        var s2      = e.value.substr(s1.length);    //得到光标右边的字串
        var n       = s1.length;    switch(k)
        {
            case 8 :
                e.value = s1.substring(0, n-1) + "0" + s2;
                if (n==6 || n==9 || n==12 || n==15) n--;
                objFocus(n-2);
                window.event.keyCode = 0;
                event.returnValue = false;
                break;
            case 46 :
                e.value = s1.substring(0, n-1) + "0" + s2;
                if (n==4 || n==7 || n==10 || n==13) n++;
                objFocus(n);
                window.event.keyCode = 0;
                event.returnValue = false;
                break;
            case 37 :
                if (n==6 || n==9 || n==12 || n==15) n--;
                if (n == e.value.length)
                {
                    if (document.selection.createRange().text == "")
                        objFocus(n-1);
                    else
                     objFocus(n - 2);
                }
                else
                    objFocus(n - 2);
                window.event.keyCode = 0;
                event.returnValue = false;
                break;
            case 39 :
                if (n==4 || n==7 || n==10 || n==13) n++;
                objFocus(n);
                window.event.keyCode = 0;
                event.returnValue = false;
                break;
        }
    }
    </script><form name=form1>
    <input
        name        = "txt"
        maxlength   = "16"
        size        = "18"
        value       = "0000-00-00 00:00"
        onfocus     = "objFocus()"
        onkeydown   = "return keyDown(this)"
        onkeypress  = "return keyPress(this)"
        onpaste     = "return false"
        ondragenter = "return false"
        style       = "ime-mode:Disabled"
    >
    </form>