Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   отслеживание изменения полей в форме (https://javascript.ru/forum/extjs/13516-otslezhivanie-izmeneniya-polejj-v-forme.html)

cmygeHm 01.12.2010 16:10

отслеживание изменения полей в форме
 
Уважаемые! Как отслеживать изменение полей в форме? Допустим форму редактирования открыли - кнопка созранить не активна, изменили любое поле - кнопочка активна. Листенеры на все компоненты добавлять не дело, так как и компоненты разные. Может есть другие варианты?:write:

underW 01.12.2010 16:32

то есть, ты хочешь listener на форму, который будет мониторить любые изменения полей формы?

cmygeHm 01.12.2010 16:37

true

underW 01.12.2010 16:43

ну смотри, идешь на API documentation, открываешь описание ext.form.FormPanel, тут тебе надо раздел listener - ищешь нужный тебе. Все.
В случае, если не удалось найти подходящий листенер, ну тут три варианта:
листенера нету - значит такая задумка не выполнима,
листенера нету - блин, надо писать свой плагин для FormPanel,
листенера нету - посмотреть еще раз внимательней, вдруг случайно пропустил.

cmygeHm 01.12.2010 16:45

спасибо :)

underW 01.12.2010 16:51

а как тебе такой вариант:
допустим есть у тебя форма, в форме пускай будет текстовое поле, которое не должно быть пустым. ты заполнил поле - значение поля стало валидным - оп, кнопочка "сохранить" активна.
так тебе подходит? или снова не то? :)

cmygeHm 01.12.2010 16:59

не то. юзер имеет право оставлять пустыми поля.

underW 01.12.2010 17:13

насколько я понимаю, то мы можем попросить форму мониторить валидность всех полей формы. и все.

underW 01.12.2010 17:19

хотя, ты знаешь, признаюсь, я сказал не правду, таки можно, изменения таки можно отслеживать :)

underW 01.12.2010 17:24

ты такое хотел:
Ext.onReady(
		function(){
		 var simple = new Ext.FormPanel({
        frame:true,
       	monitorValid: true,
        title: 'Simple Form',
        width: 350,
        defaults: {width: 230},
        defaultType: 'textfield',
		listeners: {
        clientvalidation : function(form, valid) {
           if(form.getForm().isDirty())
           {console.log("yes")}
        }
     },
        items: [{
                fieldLabel: 'First Name',
                name: 'first',
                allowBlank:false
            }],

        buttons: [{
            text: 'Save'
        },{
            text: 'Cancel'
        }]
    });

    simple.render(document.body);
    
    })


Часовой пояс GMT +3, время: 02:43.