替换请按一下你键盘上的“Insert”键,在Back键的右边

解决方案 »

  1.   

    <input type="text" name="show" value="2014-06-07" onkeydown='changeValue(this)'>
    <script>
    function GetCursorPos(oTextArea) 
    {
    oTextArea.maxLength=11;
    var s="~";
    clipboardData.setData('text',s); 
    oTextArea.focus(); 
    document.execCommand('paste'); 
    var ret=oTextArea.value.indexOf(s); 
    document.execCommand('undo'); 
    if(ret==-1) GetCursorPos(oTextArea)
    oTextArea.maxLength=10;
    return ret; 
    }
    function changeValue(o) 
    {
        var e = event.keyCode;
    var chr =  String.fromCharCode(e);
    var v = o.value.substr(0,10);
    var position = GetCursorPos(o);
    var s = [];
    var c="";
    for(i=0; i<10; i++){
    s[i] = v.substr(i,1);
    if ((i)==position){
    s[i] = chr;
    }
    c=c+s[i];
    }
    o.value = c;
    }
    </script>
    有个bug,就是不能使用小键盘
      

  2.   

    只要String.fromCharCode改好了就OK~
      

  3.   

    <input value="2004-02-15" onkeyup="replace()">
    <script>
    function replace(){
    with(event.srcElement){
    var rng=document.selection.createRange()
    select()
    rng.setEndPoint("StartToStart",document.selection.createRange())
    var pos=rng.text.length
    rng.collapse()
    rng.select()
    value=/\d/.test(value.charAt(pos-1))?value.slice(0,pos)+value.slice(pos+1):value.slice(0,pos-1)+value.slice(pos)
    }
    }
    </script>
      

  4.   

    Xmercy(我佛山人):
    还是一样啊!不是替换,而是删除光标所在处字符而在字符串最后添加字符。
      

  5.   

    <input value="2004-02-15" onkeyup="replace()">
    <script>
    function replace(){
    with(event.srcElement){
    var rng=document.selection.createRange()
    select()
    rng.setEndPoint("StartToStart",document.selection.createRange())
    var pos=rng.text.length
    var chr=value.charAt(pos-1)
    rng.collapse()
    rng.select()
    value=value.replace(new RegExp("^(.{"+(pos-1)+"})("+chr+")(.)(.*)$"),/\d/.test(chr)?"$1$4$2":"$1$3$4")
    }
    }
    </script>
    自己再判断一下是否在最后输入的字符,对最后一个字符的删或留要简单的多,自己完成
      

  6.   

    一般是不能的,JavaScript不能实现吧。