Запрет смены фокуса
От: BioUnit Россия  
Дата: 18.09.17 10:43
Оценка:
День добрый.
Есть страница, на которой несколько полей ввода.
Есть обработчик смены фокуса этих полей.
Обработчик срабатывает, а поле соотв-но теряет фокус, при клике в т.ч. на пустом месте страницы.
Как запретить смену(уход) фокуса при таком клике на "молоке" ?
Т.е. чтоб фокус переключался только при клике на контролы на странице?

Пробовал tabindex="-1", но он работает только для TAB, а надо для мыши.

Из предполагаемых решений ещё сделать глобальный обработчик изменения фокуса, смотреть target и запрещать (не пропускать далее) событие, если target не поле ввода. Как запрещать? Возвращать true из обработчика? Ничего не сломается при этом, там же целая вереница событий идет.
Может, есть более элегантное решение?
Re: Запрет смены фокуса
От: c-smile Канада http://terrainformatica.com
Дата: 18.09.17 21:30
Оценка: 6 (1)
Здравствуйте, BioUnit, Вы писали:

BU>Может, есть более элегантное решение?


Запрещать смену фокуса нельзя в принципе.

Но можно сказать "избегать установку фокуса на ...":

self.state.focusable = false;


Вот пример на попробовать в sciter.exe:

<html>
    <head>
        <title>Test</title>
        <style>

           *:focus { outline:red 2dip solid -2dip; }

        </style>
        <script type="text/tiscript">
          self.state.focusable = false;
          if(self.parent) self.parent.state.focusable = false; // disabling focus on parent <frame> too 
        </script>
    </head>
    <body>

      <input|text value="foo">

    </body>
</html>



self element по умолчанию focusable.
Также focusable любой элемент с overflow:auto | scroll; — ибо клавиатура для скроллинга работает тоже.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.