相信大家做WEB开发,一定有自己的日历选择控件:
例如可以选择出格式为:yyyy-MM-dd的日期
如果要手输日期、时间怎么办?为了尽可能提高用户体验,我们需要低调且自动校验能力比较强的输入框。
于是自己决定写一个:但是由于对JS不是很熟悉,愿和CSDN上的朋友上讨论下,如何改善如下日期输入框。
代码如下:<script language="javascript">
/*
** field 控件名称 检验格式(yyyy-MM-dd)
*/
function checkDate(field,format){
var format=format;
var patm=/^[0-9\-]{1,10}$/;
var del=/^[0-9]{4}[\-]{1}[0-9]{2}[\-]{1}$/;if(field.value.length<1) 
return false;
else{
if(field.value != "" && !patm.exec(field.value)){
   field.value=field.value.slice(0,-1);
   }
    if(field.value.length == 4){
   field.value=field.value+"-";
}
if(field.value.length == 7&&!del.exec(field.value)){
   field.value=field.value+"-";
}
if(field.value.length > 10){
   field.value=field.value.slice(0,-1);
}
  }
}
</script>
<input type="text" id="test"  name="test" style="width:130px"   maxlength="255" onkeyup ="checkDate(test,'yyyy-MM-dd')" />
上面这个日期输入框的缺陷就是当用户输入完毕后,如果再通过鼠标复制日期中的某几位进行修改,就会出现问题,敢问各位JS大牛有什么比较好的办法解决呢?

解决方案 »

  1.   

    看看我这个怎么样^_^
    function checkDate(field){
    var v = field.value;
    v = v.replace(/[^\d]/g,"");
    v = v.substring(0,Math.min(v.length,8));

    if(v.length>=6){
    v = v.substring(0,4)+"-"+v.substring(4,6)+"-"+v.substring(6);
    }else if(v.length>=4){
    v = v.substring(0,4)+"-"+v.substring(4);
    }
    field.value = v;
    }
      

  2.   

    去搜索下 jquery ui 中的 日期插件
      

  3.   

    难道就没有js大牛,参考下。给一个比较好的JS ?
      

  4.   

    很多的。使用最广泛的应该是My97DatePicker日历控件了。使用简单,功能强大
      

  5.   

    传说中的牛逼控件。http://www.my97.net你的时间不再是问题