一、实现的效果图

二、实现思路

中间想过很多实现方法,但是因为input为原生组件的原因,很难适配所有手机直接。

所有如何实现适配所有手机的验证码分离输入呢?(思路如下)

1、input组件为原生组件会造成适配问题,所以我们换个思路,如果能直接不用input组件不就没有这个问题了,但是并不是真的不用input,而是让input看不到

2、方法就是给input一个className,使它width:0;height:0;,然后让输入框focus={true},通过OnInput方法的e然后e.detail.value,这样既能拿到输入值又不会让input框出现

3、如何让输入内容出现呢,通过e.detail.value拿到输入内容,再写6个View,将输入内容分别显示到6个View内(View高度要提前固定哦)

三、实现代码(Taro+ts+mobx)

<AtModal>
<AtModalContent>
<View className='AtModalContentPhone'>
<View className='title'>请输入核销码</View>
<View className='content'>
<View className='contentInners'>
<Input
maxLength={6}
type='text'
focus={isFocusNumber}
// style={{}}
className='model_4'
cursorSpacing={110}
// value={selectCode}
onInput={this.handleChangeCode}
/>
</View>
<View className='model_u' onClick={this.modelFrame}>
<View className='model_u_b'>
<View className='model_u_frame'>
{selectCodeA}
</View>
<View className='model_u_frame'>
{selectCodeB}
</View>
<View className='model_u_frame'>
{selectCodeC}
</View>
<View className='model_u_frame'>
{selectCodeD}
</View>
<View className='model_u_frame'>
{selectCodeE}
</View>
<View className='model_u_frame'>
{selectCodeF}
</View>
</View>
</View>
</View>
</View>
</AtModalContent>
<AtModalAction>
<Button onClick={this.closeSelectModal}>取消</Button>
<Button style={{color:'rgba(255,100,100,1)'}} onClick={this.handleCodeConfirm}>确定</Button>
</AtModalAction>
</AtModal> public handleChangeCode(e){
let value = e.detail.value;
// adminStore.selectCode = value;
const data = value.split('');
let dataItem = ['','','','','',''];
data.map(
(item,index)=>{
dataItem[index] = item;
}
)
adminStore.selectCode = dataItem;
return value;
}

三、遇到的坑

1、写Input组件的OnInput对应的函数时要return e.detail.value。这样输出框的值才能改变

2、数据格式的转化。以输入'123456'为例。'123456'->['1','2','3','4','5','6']->selectCode[0]----selectCode[5]逐个渲染出来。

其中为了保证数组0-5都存在,需要先定义一个dataItem = ['','','','','',''];,然后将dataItem值赋给selectCode;

【Taro全实践】6位验证码输入视觉分离(标准下划线分离)的更多相关文章

  1. “全栈2019”Java第十六章:下划线在数字中的意义

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. 【Taro全实践】Taro在微信小程序中的生命周期

    一.Taro的本身生命周期 生命周期componentWillMount在微信小程序中这一生命周期方法对应页面的onLoad或入口文件app中的onLaunch componentDidMount在微 ...

  3. 【Taro全实践】修改radio组件的大小

    需求是将radio选中后颜色改为橙色.大小改成合适大小. 1.改颜色 <Radio color='#FF7464'></Radio> 2.改大小 <Radio style ...

  4. 巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询

    1.编辑删除&&多对多关系的其他方法 提交,数据,得到结果 查看运行 给编辑和删除,添加样式 我们点击删除,可以成功删除 打印sql语句的,在settings.py里边的配置 LOGG ...

  5. js 做的随机8位验证码

    开发思路: 画出放置验证码的模块.一个写有“看不清…”的小块,以及输入验证码的文本框 获取各个模块 封装一个函数Yan_ma(),设置验证码为8位,里面含有数字,小写字母,小写字母和中文.每种类型出现 ...

  6. java练习题(字符串类):显示4位验证码、输出年月日、从XML中抓取信息

    1.显示4位验证码 注:大小写字母.数字混合 public static void main(String[] args) { String s="abcdefghijklmnopqrstu ...

  7. Think PHP 提示验证码输入错误

    最近遇到一个项目中用的是Thinkphp这个框架开发的,其中在登录这块有验证码这个功能,其实这个功能是TP自带的,其中主要方法是buildImageVerify,位于ThinkPHP\Extend\L ...

  8. EditText格式化11位手机号输入xxx xxxx xxxx

    EditText格式化11位手机号输入xxx xxxx xxxx  /**     * 格式化11位手机号码输入 xxx xxxx xxxx格式     * 如果一直是添加:输入到第三个或第8个数字时 ...

  9. js input框输入1位数字后自动跳到下一个input框聚焦

    // input框输入1位数字后自动跳到下一个input聚焦 function goNextInput(el){ var txts = document.querySelectorAll(el); f ...

随机推荐

  1. axios 简单二次封装

    import axios from 'axios' import { Message } from 'element-ui'; // 设置baseURL //axios.defaults.baseUR ...

  2. 好好讲一讲,到底什么是Java高级架构师!

    一. 什么是架构师 曾经有这么个段子: 甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我. 乙:羡慕ing,都什么人来了? 甲:CEO.COO.CTO.All of 程序员,还 ...

  3. linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit

    一 cd : . 代表当前目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表[目前用户身份]所在的自家目录 与cd效果相同 ~account 代表 account 这个用户的自家家目录 二m ...

  4. Linux date cal bc和一些快捷键学习

    1 date 日期   2 cal 日历 具体每年日历  cal +年份 3 bc 计算器  如果有小数点需要scale命令,scale=数字 quit退出   4 [Tab]按键 :命令补全和档案补 ...

  5. curl命令的高级用法

    curl命令 是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具.作为一款强力工具,curl支持包括HTTP.HTTPS. ...

  6. idea目录因包名而未合并、逐级显示的问题

    如图包名里含有多个.,从而导致一个加载时出现了好多层.. 只要右键java目录,转换为source root就行.

  7. 【洛谷P2480】古代猪文

    题目大意:求 \[ G^{\sum\limits_{d|N}\binom{n}{k}} mod\ \ 999911659 \] 题解:卢卡斯定理+中国剩余定理 利用卢卡斯定理求出指数和式对各个素模数的 ...

  8. GPU Debugger

    https://gpuopen.com/presentations/2019/digital-dragons-2019-make-your-game-friendly.pdf https://grap ...

  9. SpringDataJpa 分页查询

    第一种方式 实体类 Student import javax.persistence.*; import java.io.Serializable; @Entity @Table(name=" ...

  10. 使用 stringstream 进行类型转换

    如何用使用stringstream进行类型转换: 1. 下面例子为整型和sting类型的相互转换示例 整型转换为字符串类型 string NumberToString(int num){    str ...