例如文本框中的内容为2009/08/31 光标在2前面的时候输入20100901就把2009/08/31替换为2010/09/01,"/"不替换

解决方案 »

  1.   

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script type="text/javascript">
    function f1(){
    if (event.keyCode==13) {
    var d=document.getElementById("date1").value;
    document.getElementById("date1").value=d.substring(0,4)+"/"+d.substring(4,6)+"/"+d.substring(6,8);
    }
    }
    </script>
    </head><body>
    <input type="text" name="textfield" id="date1" onkeydown="f1()" />
    </body>
    </html>
    参照这个看看有没有帮助
      

  2.   

    怎么判断光标在2之前呢?一般是光标离开的时候去替换,
    <input type="text" onblur="this.value=this.value.replace(/^(\d{4}\/?)(\d{2}\/?)(\d{2})$/, '$1/$2/$3')">
      

  3.   

    如果要获取,操作光标的位置,需要认识一个东西,textRange.我有一片文章你可以看看。
    http://blog.csdn.net/sunxing007/archive/2009/04/17/4086952.aspx
    针对你的问题,我写了个比较简单的例子,把光标前的字符串大写,给你参考。<input type="text" id="a" />
    <input type="button" id="b" value="change" />
    <script>
    document.getElementById('b').onclick = function(){
    var obj = document.getElementById('a');
    var text = obj.value;
    obj.focus();
    var s=document.selection.createRange();
    s.setEndPoint("StartToStart",obj.createTextRange());
    //光标前的字符串长度
    var lengthBefore = s.text.length;
    //光标前的字符串
    var textBefore = text.substring(0,lengthBefore);
    //大写
    var upperCase = textBefore.toUpperCase();
    obj.value = upperCase + text.substring(5);
    this.focus();
    };
    </script>
      

  4.   

    上面的例子有一个地方写错了。<input type="text" id="a" />
    <input type="button" id="b" value="change" />
    <script>
    document.getElementById('b').onclick = function(){
    var obj = document.getElementById('a');
    var text = obj.value;
    obj.focus();
    var s=document.selection.createRange();
    s.setEndPoint("StartToStart",obj.createTextRange());
    //光标前的字符串长度
    var lengthBefore = s.text.length;
    //光标前的字符串
    var textBefore = text.substring(0,lengthBefore);
    //大写
    var upperCase = textBefore.toUpperCase();
    obj.value = upperCase + text.substring(lengthBefore);
    this.focus();
    };
    </script>
      

  5.   

    谢谢各位的回答sunxing007的回答启发了我 最后找到了终极解决方案贴出来大家分享下
    脚本
    <script language="javascript"> function keydown(src)
    {
    var e = window.event;
    var code = e.keyCode;
    var cursorPos = getPos(src);
    if(code==8)
    { //退格
    if(cursorPos == 5 || cursorPos == 8|| cursorPos == 11 || cursorPos == 14 || cursorPos == 17)
    {
    movenext(src,cursorPos,-1);
    cursorPos-=1;
    }
    else 
    movenext(src,cursorPos,0);
    var range = setSelect(src,cursorPos-1);
    range.text = "0";
    movenext(src,cursorPos,-1);
    e.returnValue = false;
    return false;
    }
    else if(code == 46) 
    e.returnValue = false;
    } function keypress(src)
    {
    var e = window.event;
    var code = e.keyCode;
    var cursorPos = getPos(src);
    if(!keyPressInt()) 
    return false;
    if(cursorPos == 4 || cursorPos == 7|| cursorPos == 10 || cursorPos == 13 || cursorPos == 16)
    {
    movenext(src,cursorPos,1);
    cursorPos += 1;
    }
    var num = String.fromCharCode(code);
    if(checkInput(src,num,cursorPos))
    {
    var range = setSelect(src,cursorPos);
    range.text = num;
    if(cursorPos == 3 || cursorPos == 6 || cursorPos == 9 || cursorPos == 12 || cursorPos == 15)
    movenext(src,cursorPos,2);
    else 
    {
    movenext(src,cursorPos,1);
        }
    }
    e.returnValue = false;
    return false;
    } function checkInput(src,num,pos)
    {
    var val = src.value;
    var year = parseInt(val.substring(0,4),10);
    var month = parseInt(val.substring(5,7),10);

    switch(pos)
    {
    case 0: 
    if(num != 1 && num != 2) 
    return false; 
    break;
    case 5: 
    var char6 = val.charAt(6); 
    if(num > 1 || num == 1 && char6 > 2) 
    return false;
    break;
    case 6: 
    if(val.charAt(5) == "1" && num > 2 || val.charAt(5) == "0" && num == 0) 
    return false;
    break;
    case 8: 
    var char9 = val.charAt(9);
    switch(month)
    {
    case 1: 
    case 3: 
    case 5: 
    case 7: 
    case 8: 
    case 10: 
    case 12:
    if(num > 3 || num == 3 && char9 > 1) 
    return false;
    break;
    case 4: 
    case 6: 
    case 9: 
    case 11:
    if(num > 3 || num == 3&&char9 > 0) 
    return false;
    break;
    case 2: 
    if(num > 2) 
    return false;
    break;
    }
    break;
    case 9: 
    var char8 = val.charAt(8); 
    switch(month)
    {
    case 1: 
    case 3: 
    case 5: 
    case 7: 
    case 8: 
    case 10: 
    case 12:
    if(char8 == 0 && num == 0 || char8 == 3 && num > 1) 
    return false;
    break;
    case 4: 
    case 6: 
    case 9: 
    case 11:
    if(char8 == 0 && num == 0 || char8 == 3 && num != 0) 
    return false;
    break;
    case 2: 
    if(char8 == 0 && num == 0) 
    return false;
    else if(char8 == 2 && (year%4 != 0 || (year%100 == 0 && year%400 != 0)) && num > 8) 
    return false;
    break;
    }
    break;
    case 11: 
    if(num > 2 || num == 2 && val.charAt(12) > 3) 
    return false;
    break;
    case 12: 
    if(parseInt(val.charAt(11) + num)>23) 
    return false;
    break;
    case 14: 
    case 17: 
    if(num > 5) 
    return false;
    break;
    }
    return true;
    } function setSelect(src,pos)
    {
    var range = src.createTextRange();
    range.moveStart("character",pos); 
    range.moveEnd("character",pos - src.value.length + 1); 
    range.select();
    return range;
    } function getPos(obj)
    {
    var ml = obj.value.length;
    var pos = 0;
    var rng = document.selection.createRange();
    rng.moveEnd("character",ml);
    try
    {
    pos = ml - rng.text.length
    }
    catch(e)
    {
    }
    return pos;
    } function movenext(src,pos,flag)
    {
    var range = src.createTextRange();
    range.moveStart("character",pos + flag);
    range.collapse(true);
    range.select();
    } function keyPressInt()
    {
    var e = window.event;
    code = e.keyCode;
    if(code < 48 || code > 57)  
    {
    window.event.returnValue = false;
    return false;
    }
    return true;
    } function checkPaste()
    {
    window.event.returnValue=false;
    }

    </script>文本框
    <input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="21" value="2009-09-01" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" />
      

  6.   

    文本框 
    <input name="txtOverTime:Text1" id="txtOverTime_Text1" maxlength="19" value="2009-09-01 19:10:32" onpaste="checkPaste()" onkeypress="keypress(this)" onkeydown="keydown(this)" onmousemove="checkPaste()" type="text" onDrag="checkPaste()" oncut="checkPaste()" />