​CC-EasyCommonInput: 基于uni-app原生input组件封装的增强实用输入框组件

CC-EasyCommonInput:基于uni-app原生input组件封装的增强实用输入框组件

摘要:
在前端开发中,输入框(Input)是一个常见的UI组件,用于获取用户输入的数据。然而,为了满足不同的业务需求和用户体验,开发人员需要频繁地定制和修改输入框的外观和功能。CC-EasyCommonInput是一个基于uni-app原生Input组件封装的增强通用输入框,它提供了丰富的定制选项和验证规则,使得前端开发人员可以快速构建出满足业务需求的高质量输入框组件。本文将详细介绍CC-EasyCommonInput的使用方法和特性,以及它在前端开发中的优势和应用场景。

一、引言
在移动应用和网页开发中,输入框是一个必不可少的组件,用于获取用户输入的数据。然而,传统的输入框往往功能较为单一,无法满足日益复杂的业务需求和用户体验要求。为了解决这个问题,我们开发了CC-EasyCommonInput,一个基于uni-app原生Input组件封装的通用增强输入框。

图片

二、CC-EasyCommonInput概述
CC-EasyCommonInput是基于uni-app框架的自定义组件,它提供了丰富的定制选项和验证规则,使得开发人员可以快速构建出满足业务需求的高质量输入框组件。与传统的输入框相比,CC-EasyCommonInput具有以下优势:

  1. 丰富的定制选项:支持设置输入框类型(如文本、数字、密码等)、是否显示密码、左边标题、右边标题等属性,以满足不同业务需求。

  2. 内置验证规则:支持常见的验证规则,如必填项、长度限制、数字限制等,确保用户输入的数据符合预期格式。

  3. 灵活的扩展性:提供事件回调机制,便于开发人员根据具体业务逻辑处理用户输入的数据。

  4. 良好的用户体验:支持自定义占位符文本、自动聚焦、自动补全等特性,提升用户体验。

  5. 跨平台兼容性:基于uni-app框架,CC-EasyCommonInput可以在多个平台上运行,如Android、iOS、微信小程序等。

三、使用方法
使用CC-EasyCommonInput非常简单,只需按照以下步骤进行操作:

  1. 在页面中引入CC-EasyCommonInput组件:

  2. 根据具体业务需求和设计要求,你可以定制更多的属性来丰富你的输入框组件。例如,你可以设置“type”属性来限制用户可以输入的类型,“leftTitle”和“rigTitle”属性来定义输入框的标题等。具体使用方法可以参考CC-EasyCommonInput的官方文档或示例代码。

cc-easyCommonInput

使用方法
复制代码<!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
<cc-easyCommonInput type="text" :password="false" leftTitle="姓名" name="name" value=""
                placeholder="请输入姓名"></cc-easyCommonInput>

<!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
<cc-easyCommonInput type="digit" leftTitle="身高" rigTitle="cm" name="height" value=""
                placeholder="请输入身高"></cc-easyCommonInput>

<!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
<cc-easyCommonInput type="number" leftTitle="手机号" name="phone" value=""
                placeholder="请输入手机号"></cc-easyCommonInput>

<!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
<cc-easyCommonInput :password="true" leftTitle="密码" name="pwd" value=""
                placeholder="请输入密码"></cc-easyCommonInput>
HTML代码实现部分
复制代码<template>
    <view class="content">

        <form @submit="formSubmit" @reset="formReset">

            <!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
            <cc-easyCommonInput type="text" :password="false" leftTitle="姓名" name="name" value=""
                placeholder="请输入姓名"></cc-easyCommonInput>

            <cc-easyCommonInput type="digit" leftTitle="身高" rigTitle="cm" name="height" value=""
                placeholder="请输入身高"></cc-easyCommonInput>

            <!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
            <cc-easyCommonInput type="number" leftTitle="手机号" name="phone" value=""
                placeholder="请输入手机号"></cc-easyCommonInput>

            <!-- type:输入框input类型 password:是否密码 leftTitle:左边标题 rigTitle:右边标题 name:输入框名字  value:输入框值  placeholder:占位符 -->
            <cc-easyCommonInput :password="true" leftTitle="密码" name="pwd" value=""
                placeholder="请输入密码"></cc-easyCommonInput>

            <cc-easyCommonInput leftTitle="住址" name="address" value="" placeholder="请输入地址"></cc-easyCommonInput>

            <cc-easyCommonInput type="digit" leftTitle="月租金" name="rentMonth" rigTitle="元/月" value=""
                placeholder="请输入月租金"></cc-easyCommonInput>

            <view class="uni-btn-v">
                <button class="botBtn" type="primary" form-type="submit">下一步</button>
                <view class="tipText"> 注意事项: 请确保您填写的信息真实无误 </view>

            </view>
        </form>

    </view>
</template>

<script>
    export default {

        data() {
            return {

            }
        },
        methods: {
            formSubmit: function(e) {
                console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e));
                var formdata = e.detail.value;
                uni.showModal({
                    title: '温馨提示',
                    content: 'formsubmit事件携带数据为:' + JSON.stringify(e.detail.value)
                })

            },
            towardPickerChange: function(e) {
                this.towardIndex = e.target.value;
                console.log(e.target.value);
            },
            floorPickerChange: function(e) {
                this.floorIndex = e.target.value;
                console.log(e.target.value);
            },
            liftPickerChange: function(e) {
                this.liftIndex = e.target.value;
                console.log(e.target.value);
            },
            decoratePickerChange: function(e) {
                this.decorateIndex = e.target.value;
                console.log(e.target.value);
            },
        }
    }
</script>

四、应用场景与优势
CC-EasyCommonInput适用于各种需要使用输入框的场景,如表单填写、搜索框、评论框等。其优势主要体现在以下几个方面:

  1. 提升用户体验:通过提供丰富的定制选项和验证规则,CC-EasyCommonInput能够满足用户多样化的输入需求,提升应用的用户体验。

  2. 提高开发效率:相较于传统的输入框组件,CC-EasyCommonInput提供了更多的功能和灵活性,使得开发人员能够快速构建出满足业务需求的输入框组件,减少了开发时间和成本。

  3. 增强跨平台兼容性:基于uni-app框架,CC-EasyCommonInput可以在多个平台上运行,无需针对不同平台进行重复开发,降低了跨平台开发的难度和维护成本。

 

下载完整组件地址:请关注我的微信技术公众号: 前端组件开发

d848d5658a07453c843277846948c608.png

欢迎加入“前端组件开发学习”交流群,一起学习成长!可关注  “前端组件开发” 公众号后,私信后申请入群。

图片

<template> <view class="page-container"> <!-- 登录注册核心容器 --> <view class="login-card"> <view class="title">登录/注册</view> <!-- 账号输入框 --> <view class="input-group"> <uv-input placeholder="请输入账号" border="surround" v-model="account" @change="handleAccountChange" input-align="left" placeholder-style="color:#C0C4CC"></uv-input> </view> <!-- 密码输入框 --> <view class="input-group"> <uv-input type="password" placeholder="请输入密码" border="surround" v-model="password" @change="handlePasswordChange" input-align="left" placeholder-style="color:#C0C4CC"></uv-input> </view> <!-- 按钮区域 --> <view class="button-group"> <uni-button text="登录" class="custom-btn login-btn" @click="handleLogin"></uni-button> <uni-button text="注册" class="custom-btn register-btn" @click="handleRegister"></uni-button> </view> </view> </view> </template> <script> export default { data() { return { account: &#39;&#39;, // 账号 password: &#39;&#39; // 密码 } }, methods: { handleAccountChange(e) { this.account = e.detail.value; // 可在此添加账号输入的实时校验等逻辑 }, handlePasswordChange(e) { this.password = e.detail.value; // 可在此添加密码输入的实时校验等逻辑 }, handleLogin() { // 登录逻辑,比如调用接口传账号密码 console.log(&#39;点击登录,账号:&#39;, this.account, &#39;密码:&#39;, this.password); // 示例:若后续对接接口,可使用 uni.request 发起请求 // uni.request({ // url: &#39;你的登录接口地址&#39;, // method: &#39;POST&#39;, // data: { // account: this.account, // password: this.password // }, // success: (res) => { // // 登录成功处理,比如跳转页面、存储token等 // }, // fail: (err) => { // // 登录失败处理,比如提示错误 // } // }); }, handleRegister() { // 注册逻辑,类似登录,可调用注册接口 console.log(&#39;点击注册,账号:&#39;, this.account, &#39;密码:&#39;, this.password); // 示例接口调用(同登录,根据实际接口调整) // uni.request({ // url: &#39;你的注册接口地址&#39;, // method: &#39;POST&#39;, // data: { // account: this.account, // password: this.password // }, // success: (res) => { // // 注册成功处理 // }, // fail: (err) => { // // 注册失败处理 // } // }); } } } </script> <style scoped> /* 页面容器 - 控制整体布局 */ .page-container { display: flex; flex-direction: column; align-items: center; background-color: #F7F8FA; /* 更贴近设计图背景 */ min-height: 100vh; padding: 20px 0; } /* 顶部“原生”标签 - 还原设计图结构 */ .top-label { font-size: 17px; font-weight: 500; color: #333; margin-bottom: 15px; } /* 登录注册卡片容器 - 视觉还原核心 */ .login-card { width: 85%; max-width: 420px; background: #FFFFFF; border-radius: 16px; padding: 30px 24px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); display: flex; flex-direction: column; align-items: center; } /* 标题样式 - 下划线精准还原 */ .title { font-size: 22px; font-weight: bold; color: #333; position: relative; margin-bottom: 28px; } .title::after { content: &#39;&#39;; position: absolute; left: 50%; transform: translateX(-50%); bottom: -8px; width: 32px; height: 2px; background-color: #666; /* 下划线颜色 */ border-radius: 1px; } /* 输入框组样式 - 间距与视觉优化 */ .input-group { width: 100%; margin-bottom: 24px; } /* 按钮组布局 - 适配设计图间距 */ .button-group { display: flex; justify-content: space-between; width: 100%; max-width: 280px; } /* 通用按钮样式 - 基础形态统一 */ .custom-btn { width: 47%; height: 44px; line-height: 44px; border-radius: 8px; color: #fff; font-size: 16px; border: none; } /* 登录按钮渐变 - 还原设计图色彩 */ .login-btn { background: linear-gradient(90deg, #6C48EB, #7E57C2); } /* 注册按钮渐变 - 与登录保持一致 */ .register-btn { background: linear-gradient(90deg, #6C48EB, #7E57C2); } </style>这是我的代码,应该如何优化
06-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端组件开发

你的钟意将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值