(1)一个文本框,当我输入2010的时候自动在后面加上一横杠即为“2010-”,当我输入2010-1是自动为“2010-1-”并且还有一种情况是“2010-A-”可以为1,也可以为12,这个地方怎么控制好?(js控制)(2)一个文本框默认格式是“_ _ _ _- _ _- _ _”只要输入不管其格式(2010-1-25 || 2010-12-20)!,当中的_是看不见的,这里只是留这种占位格式!
    只要输入2010就自动跳到“-”后面,然后不管填写1个还是12都行,   大家谁能解决一种将感激不尽!并奉送高分!

解决方案 »

  1.   

    有现成的插件的,jquery的,如果要的话,我可以给你
      

  2.   

    我想是用AJAX+正则做吧 等待回答 顶
      

  3.   


    http://digitalbush.com/projects/masked-input-plugin/
    不知道是否为楼主要的那种
      

  4.   

    xshf12345 这位仁兄,加QQ聊快些,能否透露你的QQ号!
      

  5.   

    情况(1)  <INPUT TYPE="text" NAME="" onkeyup="test(this)">
      <SCRIPT LANGUAGE="JavaScript">
      <!--
      var Object;
    function test(obj){
    Object = obj;
    var str = obj.value;
    if (str.length == 4) obj.value = obj.value + "-"; //输完4位(年)加"-"
    else if (str.length == 6 && parseInt( str.substring(str.length-1), 10) > 1) obj.value = obj.value + "-"; //如果月份的第一位>1,加"-"
    else if (str.length == 7 && str.substring(str.length-1) != "-") obj.value = obj.value + "-"; //一共7位(年4+"-"1+月2)且最后不是"-",加"-"
    else if (str.length == 6) setTimeout('if (Object.value.length == 6) Object.value = Object.value + "-";',1000); //如果月是1,且1秒钟内未输入月份的第二位,则认为是1月,加"-"
    }
      //-->
      </SCRIPT>情况(2)还没想出来……
      

  6.   

    但是只提供一个text文本框!那怎么办呢?
      

  7.   

    支持呀,只要两个数在1秒内输完
    现在是根据这个时间来判断是1月 还是10月、11月、12月的
    如果输入的是1,且1秒钟内没有再输入,就是1月;如果1秒钟内输入第二个数字了,就是两位数的月份
    要是嫌时间短可以把最后一行else if的最后一个参数1000改成2000,就是2秒钟了
      

  8.   

    哎呀,不满足条件的情况多了,比如只输入了年不往下输了;比如输入的是字母或中文或标点符号……
    我只是做出了个输入的效果,其他的情况还是在提交的时候通过正则验证比较方便吧……下面代码加了验证的部分,填完点验证按钮  <INPUT TYPE="text" NAME="inp" id="inp" onkeyup="test(this)">
      <INPUT TYPE="button" VALUE="验证" ONCLICK="check()">
      <SCRIPT LANGUAGE="JavaScript">
      <!--
      var Object;
      var inp = document.getElementById("inp")
        function test(obj){
            Object = obj;
            var str = obj.value;
            if (str.length == 4) obj.value = obj.value + "-"; //输完4位(年)加"-"
            else if (str.length == 6 && parseInt( str.substring(str.length-1), 10) > 1) obj.value = obj.value + "-"; //如果月份的第一位>1,加"-"
            else if (str.length == 7 && str.substring(str.length-1) != "-") obj.value = obj.value + "-"; //一共7位(年4+"-"1+月2)且最后不是"-",加"-"
            else if (str.length == 6) setTimeout('if (Object.value.length == 6) Object.value = Object.value + "-";',1000); //如果月是1,且1秒钟内未输入月份的第二位,则认为是1月,加"-"
        }
    function check(){
    var reg = /^\d{4}-(1[0-2]|[1-9])-([1-9]|[1,2]\d|3[0,1])$/
    /*
    上方正则表达式:
    年:随意4位数字
    月:1开头跟0或1或2;或者1-9中的一位数字
    日:1-9中的一位数字;或1或2开头跟一位数字;或3开头,跟0或1(没有根据月份判断)
    */
    if (reg.test(inp.value))
    {
    alert("验证通过");
    }
    else {
    alert("验证不通过!");
    inp.select();
    }
    }
      //-->
      </SCRIPT>