Поставить поле в фокус

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

У меня по действию в разделе открывается 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 ? Я переопределяю этот метод и туда не заходит процесс выполнения скрипта.

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

Показать все комментарии