inputbox
поле
фокус
Технические вопросы
7.x

Здравствуйте! Подскажите как принудительно поставить поле в фокус?

У меня по действию в разделе открывается inputBox в котором одно текстовое поле. Как его сразу поставить в фокус?

Нравится

9 комментариев

как-то так

var columnControl = addConditionView.items.getAt(0).getEl();
if (!columnControl.getValue()) {
	columnControl.focus();
}

Не совсем понял как это использовать. inputBox делаю следующим образом:

var config = {
                BarCode: {
                        dataValueType: Terrasoft.DataValueType.TEXT,
                        caption: 'Штрихкод'
                    }
};
Terrasoft.utils.inputBox('Отсканируйте ', callback, ['ok', 'cancel'], this, config,
                    {
                        defaultButton: 0
                    }
);

В Terrasoft.MessageBox.Items лежит только две кнопки "Ок" и "Отмена". Моего текстового поля там нет.

В Terrasoft.MessageBox.controlConfig есть мой BarCode но как его поставить в фокус на открытии inputBox?

Попробуйте в методе Init() напишите следующее

var tb = document.getElementById('textBoxId');
tb.focus()

Ну через DOM объект я сделал просто вот так:

$( document ).ready(function() {
                    $('.barcode input').focus();
                    $('.barcode input').keypress(function (event) {
                        if (event.which == '13') {
                            event.preventDefault();
                            $('span[data-item-marker=ОК]').click();
                        }
                    });
 });

Но решение на мой взгляд не "кошерное". Я думал может можно как-то с помощью дополнительных параметров поля это реализовать.

А в Terrasoft.MessageBox.init не заходит.

Здраствуйте. Зачем такие усложенения. Человеку нужно чтоб в нужном поле после загрузки страницы в нужном поле установился фокус. Та и в вашем методе нужно к тому же подключать внешнюю библиотеку JQuery. Для такой простенькой задачки подключать внешнюю библиотеку, когда это можно сделать "чистым" Javascript, как по мне нецелесообразно

Не после загрузки страницы а после отображения inputBox и в единственном поле. Библиотека JQuery у меня уже была подключена для других целей. Можно сделать и на чистом Javascript тут как-раз разницы никакой.

А в функции Init() не подойдет проставить фокус?

В Terrasoft.MessageBox.init ? Я переопределяю этот метод и туда не заходит процесс выполнения скрипта.

Извините, сразу не понял. Я думал, Вам просто нужно на карточку.

Показать все комментарии
события окна
фокус
Скрипты
Разработка

Добрый день, коллеги.
Terrasoft XRM 3.3.2.304
Собственно не срабатывает событие OnFocusedControl для окна.
Может кто знает по какой причине и как это починить?
В окне несколько контейнеров.
Событие нужно для изменения элементов окна при смене активного контейнера.
Спасибо.

Нравится

2 комментария

Виктор, вероятно обработка события не вынесена в конфигурацию.
Завтра уточню у департамента разработки и сообщу результат.

Виктор, событие вынесено в конфигурацию, но оно отрабатывает только при программном вызове.
Например:
Self.FocusedControl = edtSubject;
Для Вашей задачи вызов этого события не подойдет, попробуйте использовать события OnExit/OnEnter

Показать все комментарии
переход
поля
фокус
форма
Технические вопросы
Разработка

Добрый день коллеги!

Не могу реализовать переход фокуса по полям в форме стрелками вверх, вниз, вправо,влево.

код обработчика события onKeyDown примерно такой:

function edtEditionsOnKeyDown(Control, Key, Shift) {
switch (Key.Value) {
case VK_UP:

Self.FocusedControl = edtText;
break;
case VK_DOWN:

Self.FocusedControl = edtText1;
break;
}
}

Внутрь события проваливается , но фокус не перемещается ни при каком раскладе.

Если любыми другими клавишами (ентер, бекспейс,ф1, ф2) то фокус нормально перемещается
как решить?

Нравится

1 комментарий

Здравствуйте
Воспользуйтесь событием OnKeyUp, стрелки вверх и вниз передают фокус передается контролам.

function edtTest2OnKeyUp(Control, Key, Shift) {
if (Key.Value == 40)
{
MessageBox(Key.Value);
 
Self.FocusedControl =  edtTest1;
}
else
{
MessageBox(Key.Value);
Self.FocusedControl =  NumericEdit;
}
Показать все комментарии