# Campo de entrada

Entrada de texto y multilínea. Admite prefijos y sufijos, borrado, conteo de caracteres, truncado con maxlength y vinculación con la validación de formularios.

Variantes del campo de entrada
<template>
  <div class="demo-col" style="gap: 18px">
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="text" placeholder="Introduce el contenido" clearable name="title" />
      <LhInput v-model="text" prefix-icon="search" suffix-icon="close" placeholder="Iconos de prefijo/sufijo" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="secret" type="password" placeholder="Contraseña" autocomplete="new-password" />
      <LhInput v-model="text" readonly placeholder="Solo lectura" />
      <LhInput v-model="text" disabled placeholder="Estado deshabilitado" />
    </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="Texto multilínea (rows=2)" resize="vertical" />
      <LhInput v-model="poem" type="textarea" autosize placeholder="Altura de fila adaptable" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="limited" :maxlength="20" show-word-limit placeholder="Conteo de caracteres" />
      <LhInput v-model="text" label="Etiqueta flotante" placeholder="Excluye a placeholder" />
    </div>
    <p class="demo-note">Valor actual: {{ text || '(vacío)' }}</p>
  </div>
</template>

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

# Props

Propiedad Descripción Tipo Predeterminado
v-model Valor enlazado (model: modelValue/input) string —
type Tipo de control 'text' \| 'textarea' \| 'password' \| … 'text'
size Tamaño 'small' \| 'medium' \| 'large' 'medium'
placeholder Texto de marcador de posición; si se omite, se usa el paquete de idioma string t('input.placeholder')
clearable Mostrar el botón de borrado boolean false
prefixIcon / suffixIcon Iconos de prefijo y sufijo; toman nombres de iconos de LhIcon string —
maxlength / minlength Límites de longitud nativos number —
showWordLimit Mostrar el conteo de caracteres (requiere maxlength) boolean false
autosize Altura de fila adaptable para textarea boolean \| {minRows,maxRows} false
disabled / readonly Deshabilitar / solo lectura boolean false
autofocus Enfocar automáticamente al montar boolean false
autocomplete Atributo autocomplete nativo string 'off'
nativeType Atributo type nativo (en vigor cuando type=text) string 'text'
resize Dirección del asa de redimensionamiento del textarea 'none' \| 'both' \| 'horizontal' \| 'vertical' —
name / form Atributos nativos name / form string —
tabindex Atributo tabindex nativo number \| string —
inputStyle Estilo en línea del elemento de entrada Record<string, string> —
label Etiqueta flotante (excluye a placeholder) string —
themeVars / bgPattern / sx Sobrescritura del tema — —

# Eventos

Evento Descripción Parámetro de callback
input Evento de v-model (val, e)
change Se dispara al cambiar el valor —
focus Se dispara al obtener el foco —
blur Se dispara al perder el foco —
clear Se dispara al borrar —
keydown Se dispara al pulsar una tecla —

# Vinculación con formularios

Colocado dentro de LhFormItem, si falla la validación el control nativo adquiere automáticamente aria-invalid="true".

Copyright © 2024-2026 FengMo WenXue