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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...