Sencha Touch FormPanel отправить слушатель не работает - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь добавить слушатель к подэлементу Ext.form.Formpanel Ext.form.BasicForm для события submit, а затем сбросить форму с помощью метода .reset ().В документе на http://dev.sencha.com/deploy/touch/docs/?class=Ext.form.FormPanel четко указано, что:

submit : ( Ext.FormPanel this, Object result ) 
Fires upon successful (Ajax-based) form submission

Но это как-то не получится для меня.Это мой код:

    var messInput = new Ext.form.FormPanel
({
    fullscreen : true,
    url : '/mess/',
    standardSubmit : false,
    listeners : {
        el: {
            submit: function(form, result) {
                form.reset();
            }
        }
            },
    items: [
            new Ext.form.Text ({
                name : 'mess',
                placeHolder: 'Text and #Tags',
                listeners : {
                keyup :function(field, event) { 
                    var keyCode = event.browserEvent.keyCode;
                    if(keyCode == 51) {
                        console.log(event.browserEvent.keyCode);
                    }

                }
            }
        })]
});

, если я попробую его таким образом, я получу

Uncaught TypeError: Object [object Object] не имеет метода reset

1013 *

Может кто-нибудь объяснить, в чем проблема именно здесь?мне нужно вызвать родительский Formpanel, потому что я добавляю слушателя в базовый el?

1 Ответ

0 голосов
/ 18 августа 2011

Вы слушаете базовое js-событие "submit" для dom-элемента. Вы не можете получить (легко) объекты Сенча внутри него. Вот почему Ext.form.FormPanel имеет beforeSubmit-событие. Данные уже собраны, поэтому вы можете сбросить форму и обработать в ajax submit с возвращением true;

form = new Ext.form.FormPanel({
    fullscreen : true,
    url : '/mess/',
    listeners: {
        beforesubmit: function(e, a) {
           this.reset();
           return true;
        }
    },

    standardSubmit : false,
    items: [
            new Ext.form.Text ({
                name : 'mess',
                placeHolder: 'Text and #Tags',
                listeners : {
                keyup :function(field, event) { 
                    var keyCode = event.browserEvent.keyCode;
                    if(keyCode == 51) {
                        console.log(event.browserEvent.keyCode);
                    }

                }
            }
        })]
});

РЕДАКТИРОВАТЬ: Это правильный путь, извините за последний ответ.

...