Skip to content

xtf-input

组件说明

xtf-input 是输入框组件,支持单行输入和多行文本域。提供前缀/后缀图标、密码切换、清除按钮、字数统计、校验状态和搜索按钮,适用于表单输入、搜索框和文本编辑等场景。


基础用法

1. 基础输入

通过 v-model 双向绑定值:

vue
<template>
  <xtf-input v-model="username" label="用户名" placeholder="请输入用户名" clearable />
</template>

<script>
export default {
  data() {
    return {
      username: ''
    }
  }
}
</script>

2. 密码输入

通过 type="password" 设置密码输入框;传入 show-password-toggle 才显示切换按钮:

vue
<template>
  <xtf-input
    v-model="password"
    label="密码"
    type="password"
    show-password-toggle
    placeholder="请输入密码"
  />
</template>

<script>
export default {
  data() {
    return {
      password: ''
    }
  }
}
</script>

3. 搜索框

通过 search-action-text 显示搜索按钮:

vue
<template>
  <xtf-input
    v-model="keyword"
    type="search"
    prefix-icon="search"
    search-action-text="搜索"
    @search="onSearch"
  />
</template>

<script>
export default {
  data() {
    return {
      keyword: ''
    }
  },
  methods: {
    onSearch() {
      console.log('搜索:', this.keyword)
    }
  }
}
</script>

4. 多行文本域

通过 type="textarea" 设置多行文本域:

vue
<template>
  <xtf-input
    v-model="remark"
    type="textarea"
    label="备注"
    placeholder="请输入备注"
    :maxlength="200"
    show-word-limit
    :auto-height="true"
  />
</template>

<script>
export default {
  data() {
    return {
      remark: ''
    }
  }
}
</script>

全部属性

属性类型默认值作用描述适用范围
valueString | Number''输入值双向绑定
modelValueString | Numberundefined输入值(v-model)双向绑定
typeString'text'输入类型类型
labelString''标签标签
placeholderString''占位文字提示
placeholderClassString''原生输入框占位文字类名自定义占位样式
disabledBooleanfalse是否禁用禁用
readonlyBooleanfalse是否只读只读
clearableBooleanfalse是否可清除清除
maxlengthString | Number140最大长度限制
showWordLimitBooleanfalse是否显示字数字数
prefixIconString''前缀图标图标
suffixIconString''后缀图标图标
requiredBooleanfalse是否必填必填
themeString'primary'主题色主题
statusString''校验状态状态
messageString''提示信息提示
searchActionTextString''非空时显示搜索按钮及其文字搜索
autoHeightBoolean | Objecttrue文本域自动高度;对象可设置 minRowsmaxRows文本域
inputmodeString''H5 输入模式提示移动端键盘优化
autosize / rows / maxHeightBoolean | Object / String | Numberundefined / 4 / ''文本域自适应行数和上限文本域
variant / size / color / labelWidthString / String / String / 多类型'surface' / '' / '' / ''外观与标签布局样式
clearTrigger / showCount / showStatusIconString / Boolean'always' / false清除触发、计数、状态图标交互
formatter / parser / rulesFunction / Function / Arraynull / null / []值处理和内部校验表单
adjustPositionBooleantrue是否自动调整位置键盘
confirmTypeString'done'键盘确认按钮类型键盘
confirmHoldBooleanfalse确认后是否保持键盘输入确认交互
focus / autoFocusBooleanfalse受控聚焦或初始化自动聚焦自动输入
cursorSpacingString | Number24键盘与输入框的间距键盘避让
cursor / selectionStart / selectionEndString | Number-1光标和选区位置编辑态控制
holdKeyboard / autoBlurBooleanfalse是否保持键盘、是否自动失焦键盘交互
ignoreCompositionEventBooleantrue是否忽略输入法组合事件输入法兼容
showConfirmBar / fixed / disableDefaultPaddingBooleantrue / false / false文本域确认栏、固定定位和默认内边距控制文本域原生能力
showPasswordToggleBooleanfalse密码输入时是否显示明文切换按钮密码输入
customClassString''自定义类名样式覆盖
customStyleString | Object''自定义样式动态样式覆盖

事件

事件名称触发时机回调参数参数说明
input输入时触发(value)输入值
change值变化时触发(value)新值
focus获得焦点时触发(event)事件对象
blur失去焦点时触发(event)事件对象
confirm点击确认按钮时触发(value)确认值
clear清除时触发--
search点击搜索时触发(value)搜索值
update:modelValue / update:value输入或清除时(value)双向同步
linechange / keyboardheightchange文本行数或键盘高度变化(event)原生事件

插槽示例

vue
<template>
  <xtf-input v-model="amount" label="金额">
    <template #prefix><text>¥</text></template>
    <template #message><text>仅支持整数</text></template></xtf-input>

</template>
<script>
export default {
  data() {
    return { amount: '' }
  }
}
</script>

插槽

插槽名称说明
label自定义标签
prefix自定义前缀
suffix自定义后缀
message自定义提示信息

主题说明

  • 支持 primarysuccesswarningdangerinfo 主题色
  • 聚焦时边框和图标使用主题色
  • 错误状态使用 danger 主题色
  • 清除按钮和密码切换使用 xtf-icon 组件

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖相关 CSS 变量。

MIT Licensed