一个输入框
<input>默认状态下为YYYY-MM-DD
<input value="YYYY-MM-DD">当我点击时YYYY-MM_DD自动消失
<input value="YYYY-MM-DD" onfocus="this.value=''">当我输入1949时后面自动出现"-"
<input value="YYYY-MM-DD" onfocus="this.value=''" onkeyup="if(this.value=='1949'){this.value+='-'}">当我输入1949或1949-10输入框就变为1949或1949-10而不是消失
你要不删它它就不消失

解决方案 »

  1.   

    修改下当我输入1949或1949-10输入框就变为1949或1949-10而不是消失
    <input value="YYYY-MM-DD" onfocus="if(this.value!='1949'&&this.value!='1949-10'){this.value=''}" onkeyup="if(this.value=='1949'){this.value+='-'}">
      

  2.   

    参考一下吧,以前做过的一个类似的东西改了一下。
    <script>
    var _defaultValue = "YYYY-MM-DD";
    var _separator = "-";
    function formatYmd(obj){
       if(!obj||obj.value=="")return;
       if(obj.value == _defaultValue){
           obj.value="";
           return;
       }
       if(obj.value.length==4&&checkYear(obj)){
           obj.value += _separator;
           var  r  = obj.createTextRange();
           r.moveStart("character",obj.value.length);  
           r.select();  
           return;
       }
       if(obj.value.length==7&&checkYm(obj)){
           obj.value += _separator;
           var  r  = obj.createTextRange();
           r.moveStart("character",obj.value.length);  
           r.select();  
           return;   
       }
    }
    function checkYear(obj){
    var sDate=obj.value.replace(/(^\s+|\s+$)/g,"");
    if(sDate == "")return true;
    var reg = /^(\d{4})$/;
    if(!checkDateByReg(sDate,reg)){
        return false;
            }
            return true;

    function checkYm(obj){
    var sDate=obj.value.replace(/(^\s+|\s+$)/g,"");
    if(sDate == "")return true;
            var reg = new RegExp("^(\\d{4})"+_separator+"(\\d{2})$");
    if(!checkDateByReg(sDate,reg)){
        return false;
            }
            return true;

    function checkDateByReg(sDate,reg){
        var r = sDate.match(reg);
        if(r==null)return false; 
        if(r.length < 3) r[2] = "01";
        r[2]=r[2]-1;
        if(r.length < 4) r[3] = "01";
        var strDate = "new Date(";
        for(var i=1; i<r.length; i++){
           strDate = strDate + r[i];
           strDate += (i==r.length-1) ? ")":","; 
        }
        var d = eval(strDate);
        if(d.getFullYear()!=r[1])return false; 
        if(d.getMonth()!=r[2])return false; 
        if(d.getDate()!=r[3])return false; 
        if(r.length > 4 && d.getHours()!=r[4])return false; 
        if(r.length > 5 && d.getMinutes()!=r[5])return false; 
        return true;
    }
    </script><input value="YYYY-MM-DD" onfocus="formatYmd(this)" onkeyup="formatYmd(this)">