<script language="javascript">
function show(){
var str=document.getElementById("sj").value;var re=/^[\d]{8}$/
if(!re.test(str)){
alert('只能是8位数字')
}
else if(re.test(str)){
document.getElementById("sj").value=str.substr(0,4)+"/"+str.substr(4,2)+"/"+str.substr(6,2);
}
}
</script>
<input name="sj" type="text" id="sj" onblur="show()" />

解决方案 »

  1.   

    <script language="javascript">
    function show(){
    var str=document.getElementById("sj").value;var re=/^[\d]{8}$/
    if(!re.test(str)){
    alert('只能是8位数字')
    document.getElementById("sj").focus();
    document.getElementById("sj").select();
    }
    else if(re.test(str)){
    document.getElementById("sj").value=str.substr(0,4)+"/"+str.substr(4,2)+"/"+str.substr(6,2);
    }
    }
    </script>
    <input name="sj" type="text" id="sj" onblur="show()" />
      

  2.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <input name="sj" type="text" id="sj" onblur="valid()" onfocus="view()" />
    <script language="javascript">
    var el=document.getElementById("sj");
    function valid()
    {
        
        var re=/^[0-9]{8}$/;
        if(!re.test(el.value))
        {
            alert('只能是8位数字');
        }
        else if(re.test(el.value))
        {
            el.value=el.value.substr(0,4)+"/"+el.value.substr(4,2)+"/"+el.value.substr(6,2);
        }
    }
    function view()
    {
        el.value=el.value.replace(/\//g,"");
    }
    </script>
    </body>
    </html>
      

  3.   

    你还MARK什么啊?
    我 4楼的代码你不用??
      

  4.   


    <script type="text/javascript">//<![CDATA[
    function formatDate(s, delemeter) {
    var r = []; 
    String(s).replace(/(\d{4})((?:1[0-2])|(?:0(?:[1-9])))((?:0(?:1-9))|(?:[1,2][0-9])|(?:30|31))/g,function(a,y,m,d){r.push(y,m,d);});
    return r.length==3?r.join(delemeter?delemeter:'-'):false;
    };
    alert(formatDate('20080221'));
    alert(formatDate('20081331'));
    //]]></script>
      

  5.   

    简单判定是否是ymd格式。
    判定规则:四位数(01-12)(01-31)
      

  6.   

    ^(((\d{3}[1-9])|(\d[1-9]\d{2})|(\d{2}[1-9]\d)|([1-9]\d{3}))-((0?[13578]-(0?[1-9]|[12]\d|3[01]))|(0?2-(0?[1-9]|1\d|2[0-8]))|(0?[469]-(0?[1-9]|[12]\d|30))|(1[02]-(0?[1-9]|[12]\d|3[01]))|(11-(0?[1-9]|[12]\d|30))))$|^((((0[48]|[2468][048]|[3579][26])00)|((\d{2})(0[48]|[2468][048]|[13579][26])))-(0?2)-(0?[1-9]|[12]\d))$
    以上是验证日期的正则表达式
    在失去焦点的时候验证,验证通过直接将日期转换成你规定的格式就ok了。
      

  7.   

    @BlueDestiny 没用
    alert(formatDate('20080801','/'));
      

  8.   


    我试了一下,4楼代码有问题呀,并没有完全实现要求,
    7楼的才是对的,再给input加个maxlength=8就完美了
      

  9.   

    疏忽了,7楼也并没有完全实现要求,提示之后没得处理(让input再次获得焦点,并选中文字)
      

  10.   

    我在7楼的基础上改了一下,应该符合楼主的要求了。<input name="sj" type="text" id="sj" onfocus="view()" onblur="valid()"  maxlength="8" />
    <script language="javascript">
    var el=document.getElementById("sj");
    function valid()
    {
        
        var re=/^[0-9]{8}$/;
        if(!re.test(el.value))
        {
            alert('只能是8位数字');
    el.focus();
        }
        else if(re.test(el.value))
        {
            el.value=el.value.substr(0,4)+"/"+el.value.substr(4,2)+"/"+el.value.substr(6,2);
        }
    }
    function view()
    {
        el.value=el.value.replace(/\//g,"");
        el.select();
    }
    </script>