一个开始日期,一个结束日期,在选择的时候验证结束日期大于开始日期,目前只能做到大于等于,请教高手怎样实现大于,谢谢!
<script> 
        Ext.onReady(function() 
        { 
            Ext.QuickTips.init();             var myform = new Ext.FormPanel({ 
                frame:true, 
                width:200, 
                layout:"form", 
                labelWidth:30, 
                title:"dateditor简单示例", 
                labelAlign:"left", 
                renderTo:Ext.getBody(), 
                items:[ 
                    { 
                        name:'startDt', 
                        id:'startDt', 
                        xtype:"datefield", 
                        vtype:'daterange', 
                        fieldLabel:"From", 
                         emptyText: '请选择日期 ...',        
                        anchor:"99%", 
                        format:'Y-m-d', 
                        editable:false, 
                        endDateField:'endDt' 
                    }, 
                    { 
                        name:'endDt', 
                        id:'endDt', 
                        vtype:'daterange', 
                        fieldLabel:"TO", 
                        format:"Y-m-d", 
                        emptyText: '请选择日期 ...', 
                        anchor:"99%", 
                        xtype:'datefield', 
                        editable:false, 
                        startDateField: 'startDt' 
                    } 
                ] 
            }); 
        }); 
    </script> 
    <script type="text/javascript" language="javascript"> 
        Ext.apply(Ext.form.VTypes, { 
            daterange : function(val, field) { 
                var date = field.parseDate(val); 
                if (!date) { 
                    return; 
                } 
                if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) { 
                    var start = Ext.getCmp(field.startDateField); 
                    start.setMaxValue(date); 
                    start.validate(); 
                    this.dateRangeMax = date; 
                } 
                else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) { 
                    var end = Ext.getCmp(field.endDateField); 
                    end.setMinValue(date); 
                    end.validate(); 
                    this.dateRangeMin = date; 
                } 
                return true; 
            } 
        }); 
    </script> 

解决方案 »

  1.   

    My97我知道的,但是我使用的是Extjs的日期控件
      

  2.   

    楼上的都是浮云,
    Ext的例子包里面就已经包含了两个日期控件的验证,
    楼主也是大意,Ext4.x的例子请参考
    http://dev.sencha.com/deploy/ext-4.0.2/examples/form/adv-vtypes.html
    Ext3.x的类似。你下载一个源码,在例子包里面的examples/form/adv-vtypes.html文件。
    Ext都封装好了,不用自己在做什么判断。
      

  3.   

    我是使用的Ext3.0,就是参考例子做的,注意问题是需要结束日期大于开始日期,而不是大于等于,我在验证方法中做过尝试,可惜是个新手,希望得到高手的指点
      

  4.   

    问题解决了,下面把代码贴出来,仅供参考,有不对的地方欢迎指出:
    {
                    xtype:'datefield',
                    name:"startDt",
                    id:'startDt',
                    fieldLabel:TXT.PROJECT_FORM_FIELD_STARTDATE,
                    format:"Y-m-d",
                    anchor:"65%",
                    editable:false,
                    listeners: {
                        'select': function(f) {
                            var newDate = new Date(new Date(f.getValue()).valueOf() + 1 * 24 * 60 * 60 * 1000);
                            Ext.getCmp("endDt").setMinValue(newDate);
                        }
                    }
                },
                {
                    xtype:'datefield',
                    name:"endDt",
                    id:'endDt',
                    fieldLabel:TXT.PROJECT_FORM_FIELD_ENDDATE,
                    format:"Y-m-d",
                    anchor:"65%",
                    editable:false,
                    listeners: {
                        'select': function(f) {
                            var newDate = new Date(new Date(f.getValue()).valueOf() - 1 * 24 * 60 * 60 * 1000);
                            Ext.getCmp("startDt").setMaxValue(newDate);
                        }
                    }
                },按钮“reset”的时候记得:
                                    Ext.getCmp("startDt").setMaxValue();
                                    Ext.getCmp("endDt").setMinValue();
                                    panel.form.reset();发分了……