Я хочу отображать всплывающее окно (с сообщением) рядом с текстовым полем, когда пользователь нажимает на текстовое поле с помощью Ext JS. Может ли кто-нибудь помочь мне в этом?
Для авторских прав я удалил текст.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны добавить слушателей focus и blur в текстовое поле.
Внутри события focus первым аргументом является текстовое поле. Текст, который вы добавляете в окно, находится внутри textfield.popupText.
ПРИМЕР
xtype: 'textfield',
popup: null,
popupText: 'Testing Popup Text',
listeners: {
focus: function(field) {
field.suspendEvent('blur');
field.suspendEvent('focus');
field.popup = field.popup || Ext.create({
xtype: 'window',
ownerCt: field,
height: 80,
width: 200,
html: field.popupText
});
field.popup.showBy(field.el, 'l-r')
field.focus();
field.resumeEvent('blur');
field.resumeEvent('focus')
},
blur: function(field) {
field.popup.destroy();
}
Привет, @Dinkheller, сработало, спасибо. Пришлось немного изменить код. Вместо Ext.create({}) мне пришлось создать его с помощью Ext.create('Ext.window.Window',{})
Привет, @Dinkheller, когда я нажимаю на текстовое поле, он немедленно вызывает событие размытия и уничтожает мое всплывающее окно. Что я могу сделать, чтобы уничтожить всплывающее окно, когда кто-то щелкает за пределами текстового поля?
Привет, Рипал. Он всегда должен размываться, когда вы покидаете текстовое поле. Если это не так, вы можете добавить логику прослушивателя в контроллер и сохранить _popup для всех полей (за раз может быть только одно). В контроллере вы слушаете щелчок по Ext.getBody() и по щелчку уничтожаете _popup. Но опять же, это не должно быть необходимо.
Если вы настроите скрипку, я могу заполнить остальное.
Привет, @Dinkheller, спасибо за ваш ответ, однако он дает мне ошибку времени выполнения, говорящую «libs.js: 3 Uncaught TypeError: Cannot read properties of undefined (чтение« подстроки »)», когда он пытается создать всплывающее окно.