小弟正在维护一个基于ASP.NET的B/S管理系统,ExtJS做的,以前客户已经往数据库里面添加了成千上万条数据。
   里面有一个能查看、修改、添加和删除日期的textField,因为客户以前数据库里面这一项填的很不规范,日期格式有“YY-MM-DD”“YY.MM.DD”“YY年MM月DD日”等几种格式,所以我们没能用dateField。
   但现在客户想要将这一项规范化,以后输入的日期将按照规定的统一格式(如“YY-MM-DD”),而以前的数据不变还要正常显示。
   我就先选择了前台校验,将这个texiField属性里面加上了校验“YY-MM-DD”日期格式的正则表达式,使以后输入的日期数据只能按照上述格式。但是显示以前数据中的其他格式的日期就会发出警告。
   后台校验的话我只会用Ext.alert弹出校验信息的对话框,但是仅因为一个小组件就弹出对话框会让客户不耐烦。问各位大虾有没有合适的解决方法?不改动数据库。Ext的组件后台校验的话能不能像Struts的后台校验那样不弹出对话框,而直接在组件旁边显示校验信息?另外,textField的regex属性能不能动态修改?因为我们这个系统分为“查看”状态和“非查看”状态,如果只在非查看状态使用正则表达式校验的话也能达到目的。小弟很菜,望不吝赐教,高分求解

解决方案 »

  1.   


    function fmtDate(s){
        s = s.replace(/\-/g,"/");
        s = s.replace(/\./g,"/");
        s = s.replace("年","/");
        s = s.replace("月","/");
        s = s.replace("日","");
        return s;
    }{xfireld:'datefield', value:new Date(fmtDate('<%=DATE_STRING%>')) }
      

  2.   

    上面xfield 写错了改一下
    2 后台校验可以用Ext.Ajax进行,根据情况调用field的Invalid("xxx")就可以了
    3 可自定义 vtype