1.0.14 • Published 5 months ago
@tanzhenxing/zx-input v1.0.14
zx-input 输入框组件
基于uni-app的增强输入框组件,支持各种表单输入场景,提供了丰富的功能和样式定制选项。
引入方式
// 在页面中导入
import zxInput from '@/components/zx-input/zx-input.vue'
// 注册组件
export default {
  components: {
    zxInput
  }
}基础用法
基础输入框
<zx-input v-model="inputValue" placeholder="请输入内容"></zx-input>禁用状态
<zx-input v-model="inputValue" disabled placeholder="禁用状态"></zx-input>可清空输入框
<zx-input v-model="inputValue" clearable placeholder="可清空"></zx-input>密码输入框
<zx-input v-model="password" password placeholder="请输入密码"></zx-input>带图标的输入框
<zx-input v-model="inputValue" prefix-icon="uni-icon-search" placeholder="搜索内容"></zx-input>
<zx-input v-model="inputValue" suffix-icon="uni-icon-calendar" placeholder="选择日期"></zx-input>不同尺寸
<zx-input v-model="inputValue" size="large" placeholder="大尺寸输入框"></zx-input>
<zx-input v-model="inputValue" placeholder="默认尺寸输入框"></zx-input>
<zx-input v-model="inputValue" size="small" placeholder="小尺寸输入框"></zx-input>数据验证
<zx-input v-model="email" validate="isEmail" placeholder="请输入邮箱"></zx-input>属性说明
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| modelValue | String/Number | '' | 输入框的值,可使用v-model双向绑定 | 
| size | String | '' | 输入框大小,可选值:large/small | 
| name | String | '' | 表单控件名称 | 
| disabled | Boolean | false | 是否禁用 | 
| type | String | 'text' | 输入框类型,可选值:text/number/idcard/digit/tel/safe-password/nickname | 
| password | Boolean | false | 是否是密码类型 | 
| placeholder | String | '' | 输入框占位文本 | 
| placeholderStyle | String | '' | 指定placeholder的样式 | 
| placeholderClass | String | '' | 指定placeholder的样式类 | 
| maxlength | Number | 300 | 最大输入长度 | 
| cursorSpacing | Number/String | 0 | 指定光标与键盘的距离 | 
| cursorColor | String | '' | 指定光标颜色 | 
| autoFocus | Boolean | false | 自动获取焦点 | 
| focus | Boolean | false | 获取焦点 | 
| confirmType | String | 'done' | 设置键盘右下角按钮的文字,可选值:send/search/next/go/done | 
| confirmHold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起 | 
| adjustPosition | Boolean | true | 键盘弹起时,是否自动上推页面 | 
| holdKeyboard | Boolean | false | focus时,点击页面的时候不收起键盘 | 
| validate | String | '' | 数据验证规则,使用validator库中的方法名 | 
| borderSize | String | '1rpx' | 边框线条大小 | 
| borderColor | String | '#ececec' | 边框线条颜色 | 
| borderActiveColor | String | '#2979ff' | 聚焦时边框颜色 | 
| borderErrorColor | String | '#ff0000' | 验证错误时边框颜色 | 
| borderStyle | String | 'solid' | 边框样式 | 
| borderRadius | String | '10rpx' | 边框圆角 | 
| clearable | Boolean | false | 是否可清空 | 
| prefixIcon | String | '' | 前缀图标类名 | 
| suffixIcon | String | '' | 后缀图标类名 | 
事件说明
| 事件名 | 说明 | 返回值 | 
|---|---|---|
| @update:modelValue | 输入值变化时触发 | 输入框当前值 | 
| @input | 输入时触发 | event = {detail: {value: 值}} | 
| @focus | 输入框聚焦时触发 | event 对象 | 
| @blur | 输入框失去焦点时触发 | event 对象 | 
| @confirm | 点击完成按钮时触发 | event 对象 | 
| @clear | 点击清除按钮时触发 | - | 
| @click-prefix-icon | 点击前缀图标时触发 | event 对象 | 
| @click-suffix-icon | 点击后缀图标时触发 | event 对象 | 
代码示例
完整表单示例
<template>
  <view class="form-container">
    <zx-input
      v-model="formData.username"
      placeholder="用户名"
      prefix-icon="uni-icon-person"
      clearable
      :maxlength="20"
      @confirm="submitForm"
    ></zx-input>
    
    <zx-input
      v-model="formData.password"
      placeholder="密码"
      password
      prefix-icon="uni-icon-locked"
      :maxlength="16"
      @confirm="submitForm"
    ></zx-input>
    
    <zx-input
      v-model="formData.email"
      placeholder="邮箱"
      validate="isEmail"
      prefix-icon="uni-icon-email"
      clearable
      @blur="checkEmail"
    ></zx-input>
    
    <button type="primary" @click="submitForm">提交</button>
  </view>
</template>
<script setup>
import { ref } from 'vue';
const formData = ref({
  username: '',
  password: '',
  email: ''
});
function checkEmail() {
  // 邮箱验证逻辑
}
function submitForm() {
  // 表单提交逻辑
}
</script>注意事项
- validate 属性使用的是 validator 库中的方法名,确保项目中已引入该库
- 使用图标需要确保项目中已引入相应的图标库
- 在使用密码输入框时,组件内置了显示/隐藏密码的切换功能