# Input 入力フィールド
テキスト / 複数行の入力です。前後サフィックス、クリア、文字数カウント、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