vue.js初学—DIY移动端输入键盘

基于Vue3和anta的拖拽模态框组件实现车牌号输入功能 创建一个拖拽模态框组件,其中包含一个显示车牌键盘的区域和一个确定按钮。使用Ant Design Vue组件库的DragModal组件来实现拖拽功能,并设置相关样式。在车牌键盘区域内,使用Vue的v-for指令遍历键盘按键,并为每个按键添加点击事件。在确定按钮上添加点击事件,用于提交输入的车牌号。使用Vue的响应式数据机制,监听车牌号的变化,并在变化时更新视图。 阅读详情

在项目开发的过程中呢,我们需要用户输入一些东西,但又不愿意让用户随意的进行输入,因而可能会选择使用一个自定义的输入法,来限制用户输入的东西,那么接下来,我们就通过一个简单的例子,来看看,移动端网页中,输入法该怎么去设置。这里我们依旧使用了我们的老朋友Vue,来进行实现。

首先我们来看一下html代码中,需要些什么。在这里呢,我们用一个输入车牌号作为例子,首先vue的引入和移动端的设定在这里就不说啦

<div id="main">
    <div class="carNumber" v-touch:tap="onTypewriting">
        <input type="text" v-model="carNumber" maxlength="8" readonly> <!-- ①一个输入框 -->
    </div>
    <span v-touch:tap="onOfferTap" class="cherkBtn">确定</span> <!-- ②确定按钮 -->
    <div class="typer" v-show="showTyper!=0"> <!-- ③输入键盘 -->
        <ul v-show="showTyper==1"> <!-- ④省的输入 -->
            <li class="typer-pro" v-for="item in provinces" :class="{'is-closeType':item=='关闭'}" v-touch:tap="input(item)">{{item}}</li>
        </ul>
        <ul v-show="showTyper==2"> <!-- ⑤字母数字的输入 -->
            <li class="typer-num" v-for="item in keyNums" :class="{'is-A': item=='A','is-OK':item=='OK','is-Del':item=='Del'}" v-touch:tap="input(item)">{{item}}</li>
        </ul>
    </div>
</div>
①这里的v-touch:tap,是做好的一个触发点击事件用的,可以理解为v-on:click;其次在这个input里面呢,会有一个readonly,这个是让这个input只读,从而做到点击的时候无法弹出系统中的输入法键盘

②确定按钮:用于最后检测这个的输入是否的合法的

③输入键盘是否弹出,以及弹出什么输入键盘,是由showTyper这个data决定的

④⑤输入车牌号由两部分构成:省份和数字字母,因而我们需要设置两个键盘

那么接下来我们就来做一个大概的css样式,这里我们主要放在键盘上

.typer {
    position: fixed;
    bottom: 0;
    background-color: #fff;
    height: 3.5rem;
    width: 100%;
    padding-top: .1rem;
}

.typer li {
    float: left;
    height: .7rem;
    margin: .1rem .05rem 0;
    color: #333;
    text-align: center;
    font-size: .32rem;
    line-height: .7rem;
    background-color: #ccc;
    -webkit-border-radius: .1rem;
    -moz-border-radius: .1rem;
    border-radius: .1rem;
}

.typer li.typer-pro {
    width: .62rem;
    padding: 0 .15rem;
}

.typer li.typer-pro.is-closeType {
    width: 1.2rem;
    float: right;
}

.typer li.typer-num {
    width: .62rem;
    padding: 0 .1rem;
}

.typer li.typer-num.is-A {
    margin-left: .31rem;
}

.typer li.typer-num.is-OK {
    width: .8rem;
    margin-left: .1rem;
}

.typer li.typer-num.is-Del {
    width: 1rem;
}
主要是最后的几个含有“is-”的几个类,对我们的键盘做一个美化的作用,而在上面的html中,我们也用v-bind:class对齐做了判断和绑定,接下来重头戏来了,JS部分
    var main = new Vue({
        el: '#main',
        data: {
            showTyper: 0,    //输入法的值,0表示不显示,1表示显示省输入键盘,2表示显示数字字母输入键盘
            provinces:["京","沪","浙","苏","粤","鲁","晋","冀",    //省
                "豫","川","渝","辽","吉","黑","皖","鄂",
                "津","贵","云","桂","琼","青","新","藏",
                "蒙","宁","甘","陕","闽","赣","湘","关闭"],
            keyNums:["0","1","2","3","4","5","6","7","8","9",     //数字字母
                "Q","W","E","R","T","Y","U","I","O","P",
                "A","S","D","F","G","H","J","K","L",
                "OK","Z","X","C","V","B","N","M","Del"],
            carNumber:'',    //输入的值

        },
        methods: {
            onOfferTap: function () {   //对最终结果进行判断
                var carNumberReg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
                if (!carNumberReg.test(this.carNumber)) {
                    _g.toast('请输入正确的车牌号码');
                    return;
                }
            },
            onTypewriting:function () {    //点击输入框时,弹出键盘
                this.showTyper = 1;
                this.changeTyper();
            },
            changeTyper:function () {    //判断输入的车牌号处于什么状态,为空?已输入第一个值(即省)?输入省之后的值?
                if(this.carNumber.length>=1){
                    this.showTyper = 2;
                }
                if(this.carNumber.length==0){
                    this.showTyper = 1;
                }
            },
            input:function (item) {    //键盘点击事件,传入键盘本身的值
                if(item=='OK'||item=='关闭'){    //判断是否点击了关闭按钮
                    this.showTyper = 0;
                    return;
                }
                if (item=='Del'){    //判断是否点击了删除按钮
                    this.carNumber = this.carNumber.slice(0,-1);
                    this.changeTyper();
                    return;
                }
                if(this.carNumber.length<7){    //判断当前的车牌号的数目是否合法,还未超出7位则可继续输入
                    this.carNumber=this.carNumber+item;
                    this.changeTyper();
                }else {
                    _g.alert('车牌号码超出正常范围');
                }
            }
        }
    });

js里的代码都已提供了注释,方便理解,不再一一赘述,大致的效果如下,因为是从实际的项目中截取下来,稍微会有许些偏差


尚未完善功能:

一般输入的第二个必须是字母,在此还未对齐进行判断


vue项目中嵌入软键盘(中文/英文) 树莓派适配,vue项目中嵌入一个jQuery的键盘(中文/英文可切换) 阅读详情

相关推荐

js软键盘,支持多种语言,包括中文

js软键盘,支持多种语言,包括中文,。。。。

自定义键盘组件封装

### 自定义键盘组件封装 父组件 wxml <view class="total-amount"> <view class="total-tit">消费总额</view> <!-- <view class="f-j-s total-input-block" catchtap="showKeyboard"> --> <view class="f-j-s total-input-block"> <text class

weixin_43218691的博客 1752

响应式、移动端模拟键盘--keyboard.js

一款自主开发的移动端键盘虚拟键盘,不用调动系统自带键盘,从而实现了想要的键盘效果。目前主要用于车牌号,可以根据需求自行修改,也可联系我

纯js实现的软键盘

(function (jquery) {     //defined variable     var currentobj,     _getdata = function (opts, callback) {         jquery.ajax({             type: "post",             dataType: "text",

Javatar2199的专栏 1423

使用vue实现简单键盘的示例(支持移动端和pc端)

主要介绍了使用vue实现简单键盘的示例(支持移动端和pc端),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

yersinia -G打不开图形化界面解决方案(曲线救国,实操可行)

附Kali 2021 VMware懒人版,已完成汉化,更新源,并已经安装yersinia。ping 114.114.114.114也不通,接着ifconfig发现 IP地址有的,然后手动配置了IP地址,发现还是Ping不通114.11.4.114.114,然后输入。更新源后,报错源无法解析,同时ping www.baidu.com也不通,那可能是DNS存在问题,更新一下DNS服务器。百度找了很久,有个回答比较接近,但一一尝试了几遍,还是无解,解决不了呀!•(2)Yersinia编译的时候,要选择gtk。

weilandeyongheng的专栏 4170

js:两种方法实现键盘按键控制

第一步:先获取按键的键码(按下哪个键) 使用DOM(文档对象模型)或者jQuery(js常用框架)实现 完整代码(之后只给js部分): <!DOCTYPE html> <html> <head> <title>键盘事件</title> </head> <body style="text-align: center;"> <h1>键盘事件</h1

qq_52824207的博客 4978

三维重建Fusion中的TSDF算法通俗描述

看个视频 https://www.youtube.com/watch?v=8M_-lSYqACo 这是mobilefusion的视频,大家先了解一下,看到在三维重建的时候外面有个长方体包围盒了吗? 数据准备: 我们不同角度拍摄的RGB图、深度图和相应的pose.txt。 步骤: 1.建立长方体包围盒 要建立一个长方体包围盒。让所有的三维点都在这个长方体里面。 假设z方向垂直相机。 很明显,x,y方...

qq_30339595的博客 1万+

【vue】电脑网页浏览器虚拟键盘

我这边虽然引用了中文的字库,但是我的需求只要求英文输入,但为了以后的使用,我保留了这部分,所以我将中文部分注释了。如需使用,在核心代码里配置放开即可。

qq_34373197的博客 1834

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单)

本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。

weixin_28481133的博客 1266

LC整流滤波电路DIY:电感电容配合,手把手搭建低纹波直流电源

在直流电源设计中,整流滤波是连接交流输入与稳定输出的关键环节。常见的电容滤波虽然简单,但在大负载下纹波抑制能力有限,电感抵抗电流突变、电容抵抗电压突变,二者组合构成的LC滤波能有效降低输出电压纹波,同时减小开机浪涌电流。在工频线性电源、功放电源等对噪声敏感的场景中,LC滤波常作为稳压前的平滑缓冲。本文以一套完整DIY项目为线索,介绍整流桥后串联功率电感、并联滤波电容的电路构成,结合实际计算与波形测试,讨论电感量估算、电容选取、谐振风险、饱和电流等工程问题,并给出上电测试和故障排查方法。通过搭建与调试,可直观

weixin_29168813的博客 378

vue3中设置页面只支持英文输入法

vue3中只支持英文输入法

foreverhui的博客 1362

【机器人】机械臂控制入门技术栈分享

机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但

要恰饭得嘛 5859

vue 管理后台 使用虚拟键盘组件 支持中英文切换

vue 管理后台 使用虚拟键盘组件 支持中英文切换

蓝胖子的博客 6931

dpdk 源码分析 rte_ring

rte_ring源码分析

qq_40843445的博客 929

CVAT本地部署保姆级教程:用Docker Compose在Ubuntu上5分钟搞定你的私有数据标注平台

本文提供CVAT本地部署的保姆级教程,详细讲解如何在Ubuntu系统上使用Docker Compose快速搭建私有数据标注平台。从环境准备、Docker配置到CVAT部署全流程,涵盖硬件要求、性能优化及安全加固等关键步骤,帮助开发团队5分钟内完成高效、安全的标注环境搭建。

weixin_42619742的博客 383

vue 自定义键盘组件_Vue2基于mint框架,移动端实现自定义安全键盘

Vue2基于mint框架,移动端实现自定义安全键盘2年前阅读 3331评论 0喜欢 2### 1、新建一个jianpan_test.vue子组件,写入以下代码```车牌前缀 {{item}}export default {computed: {result() {return {showTyper: this.showTyper,carNumber: this.carNu...

weixin_42498006的博客 725

【CloudCompare教程】017:点云快速全局配准

点云数据的配准分为基于特征(特征点、特征线)的拼接和无特征拼接。特征点匹配的方法和全局ICP的方法。特征点的方法通过全局特征匹配达到全局配准,全局ICP的方法通过对变量空间进行搜索的方法达到全局最优解。

智慧空间实验室 3930

[vue]移动端软键盘处理方案

https://www.jianshu.com/p/3c6a08af5203

sxl131415的博客 1332

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VueTouchKeyboard——一个模拟键盘

功能需求:封装一个带有设计好的样式的输入组件,输入方式为模拟的数字键盘。 键盘组件为VueTouchKeyboard,下载方式如下 npm install "vue-touch-keyboard" --save image.png 封装的输入组件 模板 <template> <div v-clickoutside="hide"> &...

玛已的小空间 5952

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

js+c#打造多语种输入法虚拟键盘的网站在线输入(创世纪篇)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33918357的博客 505

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

通过js注入解决浏览器输入法方案文档

输入法方案文档 1.     输入法流程图: 1)      打开页面注入js流程图: 启动浏览器,浏览器main.cpp会去调用TBrowserLoadInjectFile()接口,通过这个接口去加载inject_file_config.xml文件,这个文件记录有所有需要注入的js文件的路径,通过解析此文件去注入js_input_methed.js文件。

m632587166的专栏 2250

vue开发的移动端调起安卓和ios纯键盘

业务场景: Input 框只允许输入纯数字 不允许输入特殊字符,之前是至二级用正则表达式的,但是-- 和++ 正则表达式不能够过滤 几经考虑 决定从根源将诶决问题 ,用户只能调起纯数字键盘不就行了。 下面是代码: css: <span>进货数:</span> <input v-model="number" type="tel" pattern="[0-9]*" onkeyup="this.value=this.value.replace(/[^\d]/g

小月月 986

vue实现自定义身份证,数字键盘(光标,输入框,键盘)

vue实现自封装身份证键盘(光标,输入框,键盘)组件介绍组件代码插入链接与图片组件使用引用使用参数介绍方法插槽 组件介绍 vue实现自封装身份证键盘(光标,输入框,键盘全手写) 组件代码 <template> <div class="myKeyboard" @click="handleFocus" @blur="handleBlur" tabindex="0"> <div class="input-container"> <!-- <d

阿铭的博客 4317

JavaScript写一个虚拟软键盘,可拼音输入

在某些业务场景中,无法使用外接实体键盘,也不方便调出windows自带的虚拟键盘,这时候我们可以利用JavaScript写一个虚拟键盘,实现点击输入框即可唤醒,大小写中、英文及数字的输入。可满足实际使用时基本的输入要求。 具体实现: 首先是JS virtualkeyboard.js (function($){$.fn.extend({"virtualkeyboard":function(options){var temp='' temp+='<div class="virtualkeyboa

qq_25934747的博客 4497
上一篇: web前端实习路
下一篇: 常用排序算法稳定性、时间复杂度分析
Yvan_Lin
博客等级 码龄10年 11粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值