ext js radiogroup перед событием изменения - PullRequest
0 голосов
/ 07 января 2020

Не могли бы вы помочь мне перед изменением / проверкой события в радиогруппе Ext JS. Я хочу, чтобы какое-то событие должно было проверяться перед сменой переключателя в зависимости от состояния. Мне нужно разрешить пользователю изменять выбор другой радиокнопки, если условие говорит о ложности, тогда нам нужно выбрать только старую радиокнопку.

Пожалуйста, используйте следующий код:

Ext.application({
    name: 'Fiddle',
    launch: function () {
        Ext.create('Ext.form.Panel', {
            title: 'RadioGroup Example',
            width: 300,
            height: 125,
            bodyPadding: 10,
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'radiogroup',
                fieldLabel: 'Gender',
                columns: 1,
                items: [{
                    boxLabel: 'Male',
                    name: 'rb',
                    inputValue: '1'
                }, {
                    boxLabel: 'Female',
                    name: 'rb',
                    inputValue: '2',
                }],
                listeners: {
                    change: function(field, newValue, oldValue, eOpts) {
                        console.log(newValue);
                        alert(newValue.rb);
                    },
                }
            }]
        });
    }
});

https://fiddle.sencha.com/#view / редактор & скрипку / 32fb

1 Ответ

1 голос
/ 07 января 2020

Как упоминалось в комментариях, не существует события beforechange, которое можно использовать для наложения вето на изменения.

Некоторые другие параметры:

  • , которые вы можете change прослушиватель для проверки радиогруппы, что делает его недействительным, если выбрана неправильная опция. Таким образом, пользователь пассивно информируется о том, что есть проблема, и он должен ее исправить.

  • Вы можете получить описанное вами поведение, используя аргумент oldvalue, и просто установив радиоуправление возвращается к старому значению:

change: function(field, newValue, oldValue, eOpts) {
  if (<new value isn't acceptable>) {
     // Probably should let the user know why
     field.setValue(oldValue);
     return;
  }
  ... any other change logic here.
}
  • Вы также можете использовать прослушиватель change для включения и выключения опережающего выбора при изменении состояния формы, что предотвращает пользователь от плохого выбора в первую очередь.
...