当前位置: 首页 > 编程笔记 >

Vue Components 数字键盘的实现

苏志
2023-03-14
本文向大家介绍Vue Components 数字键盘的实现,包括了Vue Components 数字键盘的实现的使用技巧和注意事项,需要的朋友参考一下

本文介绍了Vue Components 数字键盘的实现,分享给大家,具体如下:

项目地址 点击查看 

项目演示 点击查看

首先监听所有的input,有input聚焦时调起数字键盘,通过getBoundingClientRect判断input位置让数字键盘在input附近,失去焦点后则隐藏数字键盘

let inputElement = document.getElementsByTagName("input");
  [...inputElement].forEach(ipele => {
   ipele.addEventListener("focus", function(e) {
    $this.inputTarget = e.target;
    let scrollTop =
     window.pageYOffset ||
     document.documentElement.scrollTop ||
     document.body.scrollTop;
    let scrollLeft =
     window.pageXOffset ||
     document.documentElement.scrollLeft ||
     document.body.scrollLeft;
    $this.NumberkeyBoardStyle =
     "top:" +
     (e.target.getBoundingClientRect().top +
      scrollTop +
      e.target.offsetHeight) +
     "px;left:" +
     (e.target.getBoundingClientRect().left +
      scrollLeft +
      e.target.offsetWidth) +
     "px";
   });
   ipele.addEventListener("blur", function(e) {
    $this.inputTarget = null;
    $this.NumberkeyBoardStyle = "display:none";
   });
  });

点击小键盘时阻止默认事件,阻止input失去焦点。

BoardNumberKeyDown(e) {
   if (e && e.preventDefault) {
    e.preventDefault();
   } else {
    window.event.returnValue = false;
    return false;
   }
  },

点击小键盘时,根据事件委托,得出点击的数字,然后根据selectionStart,selectionEnd获取input中的焦点,将小键盘中的数字插入焦点处,最后焦点右移一位。

let inputTarget = this.inputTarget;
let Pointstart = inputTarget.selectionStart;
let PointEnd = inputTarget.selectionEnd;
let wordLength = inputTarget.value.length;
if (e.target.className == "numberTD" && e.target.innerText != "←") {
inputTarget.value =
 inputTarget.value.slice(0, Pointstart) +
 e.target.innerText +
 inputTarget.value.slice(PointEnd, wordLength);
//一个小数点和开头不能有小数点
inputTarget.value = inputTarget.value.replace(/^\./g, "");
inputTarget.value = inputTarget.value
 .replace(".", "$#$")
 .replace(/\./g, "")
 .replace("$#$", ".");
inputTarget.selectionStart = Pointstart + 1;
inputTarget.selectionEnd = Pointstart + 1;
//让光标显示在input可视区域
inputTarget.blur();
inputTarget.focus();

点击删除键时,删除光标处数字,最后光标右移。

if (e.target.className == "numberTD" &&
  e.target.innerText == "←" &&
  //PointEnd==0时会复制整个input的value
  PointEnd != 0
  ) {
    inputTarget.value =
     inputTarget.value.slice(0, Pointstart - 1) +
     inputTarget.value.slice(PointEnd, wordLength);
    inputTarget.selectionStart = Pointstart - 1;
    inputTarget.selectionEnd = Pointstart - 1;
    //让光标显示在input可视区域
    inputTarget.blur();
    inputTarget.focus();
   } 

在删除数字和添加数字后要让input失去焦点在获取焦点,不然光标会在最后而不是在input的可视区域,这样子会看不到输入的值,具体可以查看项目。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 介绍 虚拟数字键盘,可以配合密码输入框组件或自定义的输入框组件使用。 引入 import { createApp } from 'vue'; import { NumberKeyboard } from 'vant'; const app = createApp(); app.use(NumberKeyboard); 代码演示 默认样式 数字键盘提供了 input、delete、blur 事件

  • 使用指南 组件介绍 数字键盘组件 引入方式 import { KeyBoard } from 'feart'; export default { components: { 'fe-key-board': KeyBoard, }, data() { return { keyboard: '' }; }, methods: { hid

  • 输入数字时,会发出相应人声朗读数字。 作者说:自定义键盘不是原创,只是本人将语音功能添加上去了,可以给需要的朋友,点击相应的数字会发出相应的人声,可以关闭语音。 [Code4App.com]

  • 在系统数字键盘的左下角添加自定义按钮。在ios7之前可以通过监听UIKeyboardDidShowNotification,然后把自定义按钮贴在键盘上,会跟键盘一起弹出。但是这种实现方法在 iOS7 的效果则变成:键盘弹出,接着突然加上按钮,无法达到原先的效果。这份代码中,开发者实现了一个高仿系统自定义的数字键盘,左下角的ABC键可切换回系统键盘。

  • 本文向大家介绍Android 仿微信自定义数字键盘的实现代码,包括了Android 仿微信自定义数字键盘的实现代码的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Android 仿微信自定义数字键盘的实现代码,分享给大家,希望对大家有帮助 最终效果: 实现这个自定义键盘的思路很简单: 要写出一个数字键盘的布局; 与 Edittext 结合使用,对每个按键的点击事件进行处理; 禁用系统软键盘。

  • 本文向大家介绍javascript实现捕捉键盘上按下的键,包括了javascript实现捕捉键盘上按下的键的使用技巧和注意事项,需要的朋友参考一下 小小的demo,用js捕捉键盘盘上按下了那个键,然后展示出对应的code值 以上所述就是本文的全部内容了,希望大家能够喜欢。