РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
26 of 274 menu

Директива wire:focus

Директива wire:focus вешается на HTML-элемент и автоматически устанавливает фокус на этом элементе при загрузке компонента или после его обновления. Это полезно для полей ввода, чтобы пользователь сразу мог начать вводить данные без лишнего клика. Директива может принимать модификаторы .delay, .debounce и .throttle для управления временем установки фокуса.

Синтаксис

<input type="text" wire:focus>

Пример

Давайте создадим поле ввода, которое получает фокус сразу после загрузки компонента:

<?php namespace AppLivewire; use LivewireComponent; class SearchForm extends Component { public $query = ''; public function render() { return view('livewire.search-form'); } } ?>
<div> <input type="text" wire:focus wire:model="query" placeholder="Search..."> <p>Query: {{ $query }}</p> </div>

Результат выполнения кода:

<div> <input type="text" placeholder="Search..."> <p>Query: </p> </div>

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

Пример

Установим фокус на поле после обновления компонента. Например, после добавления нового элемента в список:

<?php namespace AppLivewire; use LivewireComponent; class TaskList extends Component { public $tasks = []; public $newTask = ''; public function addTask() { if (strlen($this->newTask) > 0) { $this->tasks[] = $this->newTask; $this->newTask = ''; } } public function render() { return view('livewire.task-list'); } } ?>
<div> <ul> @foreach ($tasks as $task) <li>{{ $task }}</li> @endforeach </ul> <input type="text" wire:focus wire:model="newTask" placeholder="New task..."> <button wire:click="addTask">Add</button> </div>

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

Пример

Используем модификатор .delay для установки фокуса с задержкой в 200 миллисекунд:

<?php namespace AppLivewire; use LivewireComponent; class DelayedFocus extends Component { public $text = ''; public $show = false; public function showInput() { $this->show = true; } public function render() { return view('livewire.delayed-focus'); } } ?>
<div> @if ($show) <input type="text" wire:focus.delay.200ms wire:model="text" placeholder="Type here..."> @endif <button wire:click="showInput">Show input</button> <p>Text: {{ $text }}</p> </div>

После нажатия на кнопку поле ввода появляется и через 200 миллисекунд получает фокус.

Пример

Используем модификатор .debounce для установки фокуса после того, как пользователь перестанет вводить текст на 300 миллисекунд:

<?php namespace AppLivewire; use LivewireComponent; class DebouncedFocus extends Component { public $search = ''; public $results = []; public function updatedSearch() { if (strlen($this->search) > 0) { $this->results = [ 'Result 1 for ' . $this->search, 'Result 2 for ' . $this->search, ]; } else { $this->results = []; } } public function render() { return view('livewire.debounced-focus'); } } ?>
<div> <input type="text" wire:focus wire:model.debounce.300ms="search" placeholder="Search..."> <ul> @foreach ($results as $result) <li>{{ $result }}</li> @endforeach </ul> </div>

Поле ввода получает фокус при загрузке, а обновление результатов происходит с задержкой 300 миллисекунд после окончания ввода.

Смотрите также

  • директиву wire:blur,
    которая срабатывает при потере фокуса элементом
  • директиву wire:model,
    которая связывает поле ввода со свойством компонента
  • директиву wire:change,
    которая срабатывает при изменении значения поля
  • директиву wire:click,
    которая обрабатывает клик по элементу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить