Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   проверка формы на изменение полей, кроме одного! (https://javascript.ru/forum/extjs/14114-proverka-formy-na-izmenenie-polejj-krome-odnogo.html)

cmygeHm 30.12.2010 12:12

проверка формы на изменение полей, кроме одного!
 
Привет всем!
Есть такой код:

var form = new Ext.FormPanel({
        id: 'form_id',
        url: 'curl',
        frame: true,
        monitorValid: true,
        trackResetOnLoad: true,
        items: [
                  
        ],
        listeners: {
            clientvalidation: function(form, valid){
                if (form.getForm().isDirty())
	   		console.log('DIRTY!!!');
            }

        }

    });

проверяющий не изменялись ли какие поля формы. А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это? Выставлять для формы form.dirty=false не получается.

Спасибо за Ваше драгоценное время.

Ex_Soft 04.01.2011 12:40

Цитата:

Сообщение от cmygeHm (Сообщение 85782)
А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это?

allowBlank/preventMark/validator?

cmygeHm 10.01.2011 09:33

нет, совсем не то...

cmygeHm 14.01.2011 10:21

Есть еще идеи???

Ex_Soft 14.01.2011 10:35

Цитата:

Сообщение от cmygeHm (Сообщение 87166)
нет, совсем не то...

А чем Вас предложенные варианты не устроили? Тот же validator? Повесьте на него функцию возвращающую true...

cmygeHm 14.01.2011 10:49

я повесил, не срабатывает:

validator: function(){
        return true;
},

Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCmp('combo_id'));

то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?

Ex_Soft 14.01.2011 11:33

Цитата:

Сообщение от cmygeHm (Сообщение 87940)
я повесил, не срабатывает

Но функция, как таковая, хоть дергается? Поставьте брякпоинт на
validator: function(){
==>        return true;
},

Попадаем?
Цитата:

Сообщение от cmygeHm (Сообщение 87940)
Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCmp('combo_id'));

то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?

Да ректально как-то это, IMHO... Должно быть все просто как арбуз: операция довольно-таки довольно тривиальная (исключить контрол из валидирования)... Такие извраты...

cmygeHm 14.01.2011 11:47

заходит в тело функции. все ок.

cmygeHm 14.01.2011 11:52

xtype: 'container',
                                layout: 'column',
                                items: [
                                    {
                                        xtype: 'combo',
                                        valueField: 'id',
                                        id: 'combo_id',
                                        width: 140,
                                        displayField: 'action_name',
                                        triggerAction: 'all',
                                        selectOnFocus:true,
                                        hiddenName: 'actions',
                                        validator: function(){
                                            return true;
                                        },
                                        store: new Ext.data.JsonStore({
                                            autoLoad: true,
                                            url: 'url',
                                            fields: ['id','action_name'],
                                            root: 'rows',
                                            listeners: {
                                                load: function(){
                                                    Ext.getCmp('combo_id').setValue(1);
                                                }   
                                            }
                                        })
                                        
                                    }

Ex_Soft 14.01.2011 12:06

Дык, получается, помог validator?

cmygeHm 14.01.2011 12:12

нет. clientvalidation показывает, что isDirty!

cmygeHm 14.01.2011 12:53

Сделал так:
xtype: 'container',
                                layout: 'column',
                                items: [
                                    {
                                        xtype: 'combo',
                                        valueField: 'id',
                                        id: 'combo_id',
                                        width: 140,
                                        displayField: 'action_name',
                                        triggerAction: 'all',
                                        selectOnFocus:true,
                                        hiddenName: 'actions',
                                        store: new Ext.data.JsonStore({
                                            autoLoad: true,
                                            url: 'url',
                                            fields: ['id','action_name'],
                                            root: 'rows',
                                            listeners: {
                                                load: function(){
                                                    Ext.getCmp('combo_id').setValue(1);
                                                    Ext.getCmp('combo_id').originalValue = 1;
                                                }
                                                
                                            }
                                        }),
                                        listeners:{
                                            select: function(){
                                                Ext.getCmp('combo_id').originalValue = Ext.getCmp('combo_id').getValue();
                                            } 
                                        }

основываясь на вот этом http://www.delphifaq.com/faq/javascr...js/f3463.shtml

cmygeHm 14.01.2011 12:54

Ex_Soft Спасибо тебе! :)

dp_maximk 11.04.2011 13:24

Нашел более красивый способ :)
items: [
      {
         xtype: 'combo',
         valueField: 'id',
         .....
         isDirty: function() { return false }
      }

cmygeHm 13.04.2011 18:27

Цитата:

Сообщение от dp_maximk (Сообщение 100177)
Нашел более красивый способ :)
items: [
      {
         xtype: 'combo',
         valueField: 'id',
         .....
         isDirty: function() { return false }
      }

Круто :) Спасибо :)


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