Jump to content

Функция Prompt() не активирует по умолчанию элемент ввода


x11

Recommended Posts

Если вызвать функцию Prompt() то потом строка ввода не активна.

Было бы очень удобно, если бы она имела фокус ввода, чтобы не приходилось тянуться мышкой и щелкать по ней для активации.

Screenshot_1.jpg

Link to comment
Share on other sites

4 minutes ago, x11 said:

Если вызвать функцию Prompt() то потом строка ввода не активна.

Было бы очень удобно, если бы она имела фокус ввода, чтобы не приходилось тянуться мышкой и щелкать по ней для активации.

Можете проверить на стандартном демо примере?

\FMSoft\Framework\uniGUI\Demos\Desktop\Prompt

 

Link to comment
Share on other sites

1 hour ago, x11 said:

Попробовал еще несколько тем, обнаружил, что на uni_sencha2_mono, uni_sencha_classic и uni_lavender тоже есть проблема.

Обходной путь...

Для десктопной.

MainForm -> Script:

Ext.onReady(function() {
    Ext.Msg.on('show', function() {
        Ext.defer(function() {
            var inputEl = Ext.WindowManager.getActive().getEl().select('input').elements[0];
            var textareaEl = Ext.WindowManager.getActive().getEl().select('textarea').elements[0];
            if (inputEl) {
                inputEl.focus()
            }
            if (textareaEl) {
                textareaEl.focus()
            }
        }, 100);
    });
});

 

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
16 minutes ago, x11 said:

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

Обходное решение.

Script:

Ext.onReady(function() {
    Ext.Msg.on('show', function() {
        var promt = Ext.Msg.getPrompt();
        if (promt) {
            promt.getFocusEl().focus()
        }
    });
});

 

  • Like 1
Link to comment
Share on other sites

32 minutes ago, x11 said:

Еще вопросик. А заголовок у Prompt() можно менять?

Одно из возможных решений на мой взгляд, попробуйте:

var titles = new Map();
titles.set('x-msgbox-error', 'Ошибка');
titles.set('x-msgbox-warning', 'Предупреждение');
titles.set('x-msgbox-info', 'Информация');
titles.set('x-msgbox-question', 'Подтверждение');

Ext.onReady(function() {
    Ext.Msg.on('show', function() {
        Ext.Msg.setTitle(titles.get(Ext.Msg.getIcon()));
        var promt = Ext.Msg.getPrompt();
        if (promt) {
            promt.getFocusEl().focus()
        }
    });
});

 

  • Like 1
Link to comment
Share on other sites

  • 10 months later...
On 12/27/2020 at 9:44 PM, Sherzod said:

Для десктопной.

Подскажите, а как сюда к конкретному окну ввода Promp() добавить маску ввода, например, маску ввода IP.

Link to comment
Share on other sites

1 hour ago, x11 said:

Подскажите, а как сюда к конкретному окну ввода Promp() добавить маску ввода, например, маску ввода IP.

Последовательность примерного обходного решения:

1. Создать глобальную переменную ("inputEl") на стороне клиента.

... inputEl = Ext.WindowManager.getActive().getEl().select('input').elements[0];

2. Перед вызовом Promt, очисть маску ввода у "inputEl".

3. Задать маску при необходимости для "inputEl".

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...