Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   KeyMap и body формы (https://javascript.ru/forum/extjs/5357-keymap-i-body-formy.html)

kez 07.10.2009 17:00

KeyMap и body формы
 
Есть KeyMap.
Код:

new Ext.KeyMap(Ext.getCmp('my-form').body, [{
    key: Ext.EventObject.ENTER,
    fn: function() {
        Ext.getCmp('my-form').submit();
    },
    scope: this
}]);

не хочется ссылаться на компонент таким образом
Код:

Ext.getCmp('my-form').submit();
т.к. на странице присутствует два компонента с таким id.
как можно в моем случае получить в какой из форм был нажат Enter? прошу учесть что кеймап забиндин на Ext.getCmp('my-form').body и ссылка по this не проходит. пытался выйти по findParent('form'), тоже не получилось.
Заранее спасибо.

e1f 07.10.2009 18:39

Попробуйте event.target || event.srcElement события. А вообще-то это кака -- два элемента с одинаковыми id. Самому-то не стыдно? ;)

Kolyaj 07.10.2009 22:38

Это не кака, так просто работать не будет.

kez 07.10.2009 23:30

а чего стыдно то? )
у меня есть класс, который расширяет панель и на ней куча полей ввода.
в моем случае это логинФорма. эта панель встречается в двух вариациях - как просто панель на главной странице, так и всплывающее окно. соответственно одновременно, если пользователь вызовет всплывающее окно, то будет существовать два экземпляра этого класса(формы).
вешать на каждое поле обработчик - не практично, следовательно остается KeyMap. не понял откуда можно получить event.
я с extJS всего пару дней, так что не судите, а советом помогите)

Kolyaj 08.10.2009 09:07

kez,
не может быть двух элементов с одинаковыми id. Какой-то из них учитываться не будет.

kez 08.10.2009 09:25

да. вы оказались правы - второй созданный экземпляр не реагирует на KeyMap.
а как мне правильнее поступить в моем случае?...на каждое поле обработчики не очень хочется вешать. есть более красивое решение?

e1f 08.10.2009 14:12

Есть. Класс.

kez 08.10.2009 14:52

так у меня форма и реализована в виде класса.
объясните подробнее, пожалуйста.

e1f 08.10.2009 15:05

Выбирайте элементы для бинда, используя class, а не id.
А зачем биндить на body-то? Получается, что где бы не был нажат Enter, мы все равно должны что-то сабмитить?

kez 08.10.2009 15:13

Да. смысл в этом.
в форме 2а поля - логин и пароль ну и кнопка.


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