0

2 つの日付フィールドを持つフォームがあり、日付範囲を定義する必要があるため、終了を開始より前にすることはできません。どちらも2つの日付ピッカーによって作成されているため、「終了」の「開始」より前の日付を無効にする必要があります。いくつかのコードを貼り付けるこのマニュアル ページを見つけましたが、このコードを自分のページに貼り付けるとエラーが発生します。私のページは複雑すぎるかもしれませんが、そうは思いません。他のすべてのコードを失敗させずにコードを貼り付ける場所を見つけられないのは私だけだと思います。以下は私のページのコードです:

Ext.define('MyDesktop.count', {
extend: 'Ext.ux.desktop.Module',

requires: [
    'Ext.ux.desktop.DatabaseModel',
    //'Ext.ux.desktop.UserModel',
    'Ext.data.TreeStore',
    'Ext.layout.container.Accordion',
    'Ext.toolbar.Spacer',
    'Ext.tree.Panel'
],

id:'count',

init : function(){
this.launcher = {
        text: 'count',
        iconCls:'accordion'

    };
},

createWindow : function(){
    var App = this.app;
    var desktop = this.app.getDesktop();
    var win = desktop.getWindow('count-win');
    if (!win) {
        win = desktop.createWindow({
            id: 'count-win',
            title: 'count',
            width: 350,
            height: 200,
            animCollapse: false,
            maximizable: false,
            resizable: false,
            //constrainHeader: true,
            //bodyBorder: true,
            layout : 'anchor',
            items:[
                {
                xtype : 'fieldset',
                border: false,
                defaultType: 'textfield',
                items: [
                        {
                        xtype: 'datefield',
                        fieldLabel: 'Start date',
                        format: 'Ymd',
                        id:"start",
                        //altFormats: 'Ymd',
                        vtype: 'daterange',
                        endDateField: 'end'
                        },
                        {
                        xtype: 'datefield',
                        fieldLabel: 'End date',
                        format: 'Ymd',
                        id: "end",
                                             //minValue: Ext.getCmp('start').getValue(),
                        //altFormats: 'm/d/Y',
                        vtype: 'daterange',
                        startDateField: 'start'
                        },
                        {
xtype: 'combo',
fieldLabel: 'Client',
   id:"client",
hiddenName: 'client',
store: new Ext.data.SimpleStore({
    data: [
        ['applix', 'applix'],
        ['banzai', 'banzai'],
        ['banzai-cooking', 'banzai - cooking'],
        ['integralAS', 'integralAS'],
        ['LinkSmart', 'LinkSmart'],
        ['nbcuniversal', 'nbcuniversal'],
        ['primenetwork', 'primenetwork'],
        ['quag', 'quag'],
        ['turnEU', 'turnEU'],
        ['turnUS', 'turnUS']
    ],
    id: 0,
    fields: ['value', 'text']
}),
valueField: 'value',
displayField: 'text',
triggerAction: 'all',
editable: false
}       

                        ]


                }




            ],

            buttons: [{
                            text: 'Submit',
                            handler: function() {
                                console.log(this);
                                                           start= Ext.util.Format.date(Ext.getCmp('start').getValue(),'Ymd');
                                end= Ext.util.Format.date(Ext.getCmp('end').getValue(),'Ymd');
                                //period = Ext.getCmp('period').value;
                                client = Ext.getCmp('client').value;
                                Ext.Ajax.request({
                                            method : "GET",
                                            url : 'http://whatever.com/count?client='+client+'&start='+start+'&end='+end,

                                            timeout : 30000,
                                            success :
                                                                                      function (response) {
                                                                                      //console.log(Ext.getCmp('to_add'))
                                                                                       Ext.Msg.alert(response.responseText);
                                                                                       desktop.getWindow('count-win').doClose();
                                                                                      }//handler

                                                ,
                                            failure : 
                                                function(response) {
                                                    alert("Wrong request");
                                                }
                                        });
                                }



    }]
    });
    }

    return win;
}
});

vtypes は既にそこにあります。残りのコードをすべて切り取らずに、daterage プロパティを処理するリスナーや関数をどこに配置すればよいでしょうか。フォームのウィンドウが機能しなくなった) またはマニュアルのコードを使用する必要がありますか? 誰でもこの問題の経験がありますか?

4

1 に答える 1

1

わかりました、答えは一見したよりも簡単です vtype を使用してソリューションを終了する必要があります (これは難しく、機能しません)。次に、リスナーを自分のものに追加する必要があります。

xtype: "datefield",

コードはここにあります:

{
                        xtype: 'datefield',
                        fieldLabel: 'Start date',
                        format: 'Ymd',
                        id:"start",
                        //altFormats: 'Ymd',
                        vtype: 'daterange',
                        endDateField: 'end',
                        listeners:{
                            'change': function(th,a){
                             Ext.getCmp('end').setMinValue(a);
                        }
                        }},

最初の日付フィールドが変更されると、2 番目の日付フィールドの minValue が変更されます。それは簡単です、それは私のために働いた.

于 2013-12-10T11:39:24.940 に答える