这篇文章主要介绍了关于使用Vue自定义数字键盘组件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
最近做 Vue 开发,因为有不少页面涉及到金额输入,产品老是觉得用原生的 input 进行金额输入的话 体验很不好,于是自己动手写了一个使用Vue自定义数字键盘组件,具体实现代码大家参考下本文
为了满足用户体验,小编用vue写了一个自定义数字键盘组件,用户体验度还不错。
废话不多说,先上效果图吧~
效果图
具体实现
布局排版
<p class='key-container'> <p class='key-title'>请输入金额</p> <p class='input-box'>{{ money }}</p> <p class='keyboard' @click.stop='_handleKeyPress'> <p class='key-row'> <p class='key-cell' data-num='7'>7</p> <p class='key-cell' data-num='8'>8</p> <p class='key-cell' data-num='9'>9</p> <p class='key-cell' data-num='D'>C</p> </p> <p class='key-row'> <p class='key-cell' data-num='4'>4</p> <p class='key-cell' data-num='5'>5</p> <p class='key-cell' data-num='6'>6</p> <p class='key-cell' data-num='C'>清空</p> </p> <p class='key-row'> <p class='key-cell' data-num='1'>1</p> <p class='key-cell' data-num='2'>2</p> <p class='key-cell' data-num='3'>3</p> <p class='key-cell' data-num='-1'></p> </p> <p class='key-row'> <p class='key-cell disabled' data-num='-1'></p> <p class='key-cell' data-num='.'>.</p> <p class='key-cell' data-num='0'>0</p> <p class='key-cell' data-num='-1'></p> </p> <p class='key-confirm' data-num='S'>确认</p> </p> </p>
布局方面我全部采用了 p 元素来模拟,方便好用 (๑ŐдŐ)b
键盘按键方面,每个按钮都设置了其自定义属性值 num ,目的就是为了区分按键后产生不同的效果
事件绑定在了父级,通过捕获来确定具体点击的元素
样式代码我在这里就不贴了,具体的我托管到 github 上了~
输入判断
对于键盘来说,最主要的就是输入判断,整个键盘的输入都是先经过 _handleKeyPress 进行处理的
//处理按键 _handleKeyPress(e) { let num = e.target.dataset.num; //不同按键处理逻辑 // -1 代表无效按键,直接返回 if (num == -1) return false; switch (String(num)) { //小数点 case '.': this._handleDecimalPoint(); break; //删除键 case 'D': this._handleDeleteKey(); break; //清空键 case 'C': this._handleClearKey(); break; //确认键 case 'S': this._handleConfirmKey(); break; default: this._handleNumberKey(num); break; } }
可以看出,我将按键种类分为了,五大类,分别是 小数点 、 删除(退格)键 、 清空键 、 确认键 和 数字键 ,分别对用不同的处理函数,接下来我们一一来分析~
小数点,由于最多只能输入一个小数点,因此需要对其判断,如果有小数点直接返回;没有的话,也要分小数点是不是第一个输入的字符,如果是就将其变成 0. ,如果不是将小数点追加到当前字符末尾;
//处理小数点函数 _handleDecimalPoint() { //如果包含小数点,直接返回 if (this.money.indexOf('.') > -1) return false; //如果小数点是第一位,补0 if (!this.money.length) this.money = '0.'; //如果不是,添加一个小数点 else this.money = this.money + '.'; }
删除(退格)键,处理起来比较方便,先判断当前输入的字符是否为空,如果没有字符,直接返回,否则将字符串最后一个字符删除;
//处理删除键 _handleDeleteKey() { let S = this.money; //如果没有输入,直接返回 if (!S.length) return false; //否则删除最后一个 this.money = S.substring(0, S.length - 1); }
清空键,逻辑最简单,直接将当前字符清空即可;
//处理清空键 _handleClearKey() { this.money = ''; }
确认键,判断当前字符是否为空,为空就提示信息并返回,不为空我们也要进行判断,如果输入的是 8. 这种格式,我们需要对齐格式化成 8.00 这种形式,否则就直接保留两位小数,最后在触发 回调,并把结果作为参数传递过去;
_handleConfirmKey() { let S = this.money; //未输入 if (!S.length){ alert( '您目前未输入!' ) return false; } //将 8. 这种转换成 8.00 if (S.indexOf('.') > -1 && S.indexOf('.') == (S.length - 1)) S = Number(S.substring(0, S.length - 1)).toFixed(2); //保留两位 S = Number(S).toFixed(2); this.$emit('confirmEvent',S) }
数字键,逻辑也不是很复杂,主要先看其有没有小数点,如果有小数点,那么最多输入两位数字,如果没有小数点,得判断第一位输入的是是不是0 , 如果是0,那么接下来就只能输入小数点了,而且也要杜绝 0000 这种无效的输入,因此我多加了一个判断,否则就直接追加在当前字符后面即可;
//处理数字 _handleNumberKey(num) { let S = this.money; //如果有小数点且小数点位数不小于2 if ( S.indexOf('.') > -1 && S.substring(S.indexOf('.') + 1).length < 2) this.money = S + num; //没有小数点 if (!(S.indexOf('.') > -1)) { //如果第一位是0,只能输入小数点 if (num == 0 && S.length == 0) this.money = '0.'; else { if (S.length && Number(S.charAt(0)) === 0) return; this.money = S + num; } } }
组件引入
组件准备好了,只需填好路径,在对应的 components 中注册后,直接放在页面上使用使用即可,类似下面
<calculation @confirmEvent="_confirmEvent"></calculation>
其中, _confirmEvent 是点击确认键的回调,参数就是输入的金额,我这里只是简单的打印而已~
_confirmEvent(res){ console.log(res) }
效果就跟下面差不多,
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上是使用Vue自定义数字键盘组件的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

是的,JavaScript的引擎核心是用C语言编写的。1)C语言提供了高效性能和底层控制,适合JavaScript引擎的开发。2)以V8引擎为例,其核心用C 编写,结合了C的效率和面向对象特性。3)JavaScript引擎的工作原理包括解析、编译和执行,C语言在这些过程中发挥关键作用。

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器