# Поле ввода

Текстовый ввод, в том числе многострочный. Поддерживает префиксы/суффиксы, очистку, подсчёт символов, усечение по maxlength и связывание с валидацией формы.

Варианты поля ввода
<template>
  <div class="demo-col" style="gap: 18px">
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="text" placeholder="Введите текст" clearable name="title" />
      <LhInput v-model="text" prefix-icon="search" suffix-icon="close" placeholder="Иконки префикса/суффикса" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="secret" type="password" placeholder="Пароль" autocomplete="new-password" />
      <LhInput v-model="text" readonly placeholder="Только чтение" />
      <LhInput v-model="text" disabled placeholder="Отключённое состояние" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap; align-items: center">
      <LhInput v-model="text" size="small" placeholder="small" />
      <LhInput v-model="text" size="medium" placeholder="medium" />
      <LhInput v-model="text" size="large" placeholder="large" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="poem" type="textarea" :rows="2" placeholder="Многострочный текст (rows=2)" resize="vertical" />
      <LhInput v-model="poem" type="textarea" autosize placeholder="Автоматическая высота строк" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="limited" :maxlength="20" show-word-limit placeholder="Подсчёт символов" />
      <LhInput v-model="text" label="Плавающая метка" placeholder="Взаимоисключающе с placeholder" />
    </div>
    <p class="demo-note">Текущее значение: {{ text || '(пусто)' }}</p>
  </div>
</template>

<script>
export default {
  data: () => ({ text: '', secret: '', poem: '', limited: '' }),
}
</script>

# Props

Проп Описание Тип По умолчанию
v-model Привязанное значение (model: modelValue/input) string —
type Тип контрола 'text' \| 'textarea' \| 'password' \| … 'text'
size Размер 'small' \| 'medium' \| 'large' 'medium'
placeholder Текст-плейсхолдер; по умолчанию из языкового пакета string t('input.placeholder')
clearable Показывать кнопку очистки boolean false
prefixIcon / suffixIcon Иконки префикса/суффикса; имя встроенной иконки LhIcon string —
maxlength / minlength Нативные ограничения длины number —
showWordLimit Показывать подсчёт символов (требуется maxlength) boolean false
autosize Автоматическая высота строк textarea boolean \| {minRows,maxRows} false
disabled / readonly Отключение / только чтение boolean false
autofocus Автофокус при монтировании boolean false
autocomplete Нативный autocomplete string 'off'
nativeType Нативный type (действует при type=text) string 'text'
resize Направление маркера изменения размера textarea 'none' \| 'both' \| 'horizontal' \| 'vertical' —
name / form Нативные атрибуты name / form string —
tabindex Нативный tabindex number \| string —
inputStyle Инлайновые стили элемента ввода Record<string, string> —
label Плавающая метка (взаимоисключающе с placeholder) string —
themeVars / bgPattern / sx Переопределение темы — —

# Events

Событие Описание Параметры обратного вызова
input Событие v-model (val, e)
change Срабатывает при изменении значения —
focus Срабатывает при получении фокуса —
blur Срабатывает при потере фокуса —
clear Срабатывает при очистке —
keydown Срабатывает при нажатии клавиши —

# Связь с формой

При размещении внутри LhFormItem и ошибке валидации нативный контроль автоматически получает aria-invalid="true".

Copyright © 2024-2026 FengMo WenXue