QInput — один из базовых компонентов Quasar,
предназначенный для создания текстовых полей с широкими возможностями
настройки. Он является оберткой над стандартным
<input> HTML, но добавляет множество встроенных
функций, таких как валидация, маски ввода, иконки действий, стилизация и
взаимодействие с темой приложения.
v-model Связывает значение поля с
переменной в компоненте Vue. Изменение значения в поле автоматически
обновляет переменную, и наоборот.
type Определяет тип поля ввода:
text, password, number,
email, tel и др. Пример:
<q-input v-model="email" type="email" label="Электронная почта" />label Отображает текстовую
подсказку для поля ввода. Поддерживает плавающие лейблы при
фокусе.
placeholder Отображает временный
текст внутри поля, пока пользователь не ввел значение.
disable / readonly
Позволяет заблокировать поле для редактирования или сделать его
доступным только для чтения.
QInput поддерживает встроенную валидацию через свойство
rules, которое принимает массив функций
или выражений. Каждая функция должна возвращать true, если
значение корректное, или строку с сообщением об ошибке, если нет.
Пример:
<q-input
v-model="username"
label="Имя пользователя"
:rules="[val => val.length >= 3 || 'Имя должно содержать минимум 3 символа']"
/>
Свойство mask позволяет ограничить
формат ввода. Маски используют символы:
# — цифраA — буква* — любая буква или цифраПример для номера телефона:
<q-input
v-model="phone"
mask="+7 (###) ###-##-##"
label="Телефон"
/>
fill-mask можно использовать, чтобы
автоматически подставлять символы маски в поле ввода.
QInput поддерживает добавление иконок слева и справа:
prepend-icon — иконка перед полем.append-icon — иконка после поля, можно использовать для
очистки или действий.Пример:
<q-input
v-model="search"
label="Поиск"
prepend-icon="search"
@append="searchData"
/>
Дополнительно доступны слоты:
before и after — позволяют вставлять
произвольный HTML или компоненты.hint и counter — отображают подсказку и
счетчик символов.Свойство counter отображает текущую
длину текста и позволяет ограничивать максимальное количество
символов:
<q-input
v-model="comment"
label="Комментарий"
counter
:maxlength="200"
/>
Если требуется показывать только лимит без счетчика текущих символов,
используется max-length без
counter.
QInput поддерживает события:
@focus — поле получило фокус.@blur — потеря фокуса.@input — каждое изменение текста.@keyup, @keydown — перехват клавиш.Пример:
<q-input
v-model="email"
label="Email"
@blur="validateEmail"
/>
Методы компонента позволяют управлять состоянием:
focus() — программное наведение
фокуса.select() — выделение текста.reset() — очистка значения.dense — компактное поле.outlined — обводка вокруг поля.filled — заливка фона.standout — выделение цветом для
уведомления пользователя.Пример комбинирования:
<q-input
v-model="name"
label="ФИО"
outlined
dense
:rules="[val => val.length > 0 || 'Поле обязательно']"
/>
QInput автоматически наследует цвет темы Quasar, поддерживает
динамическое изменение цвета подсказок и рамок через свойства
color и text-color.
QInput легко интегрируется с QForm, поддерживает валидацию всей формы и сброс значений:
<q-form ref="form" @submit="submitForm">
<q-input v-model="username" label="Имя" :rules="[val => val !== '' || 'Введите имя']"/>
<q-btn type="submit" label="Отправить"/>
</q-form>
this.$refs.form.validate()
проверяет все поля с правилами.this.$refs.form.reset() очищает
форму.QInput можно использовать как основу для сложных кастомных компонентов:
QInput предоставляет все необходимые инструменты для построения профессиональных интерфейсов с гибкой настройкой, встроенной валидацией и визуально аккуратным оформлением.