微信小程序数字键盘(仿微信转账键盘)

news2024/11/18 19:59:58

微信小程序input自带数字输入键盘,不过是直接调用的系统键盘,无法个性化。

代码中使用使用了Vant WeappVant UI小程序版,这里就不介绍相关安装说明了,大家自行安装Vant Weapp。
在这里插入图片描述

json 用到的组件

{
  "usingComponents": {
    "van-cell": "@vant/weapp/cell/index",
    "van-button": "@vant/weapp/button/index",
    "van-popup": "@vant/weapp/popup/index",
    "van-field": "@vant/weapp/field/index",
    "van-row": "@vant/weapp/row/index",
    "van-col": "@vant/weapp/col/index"
  }
}

wxml 结构

<van-cell title="分数" value="{{score || '点击打分'}}" bindtap="tapScore" />

<!-- 打分键盘 -->
<van-popup
  show="{{ keyboardShow }}"
  position="bottom"
  custom-style="height: 508rpx;"
  bind:close="onClose"
>
  <view class="keyborad">
    <view class="input">
      <van-field
        value="{{ value }}"
        custom-style="border: 2prx solid #dcdee0"
        placeholder="请选择分数"
        disabled
      />
    </view>
    <view class="number-keyboard">
      <van-row class="number" gutter="10">
        <van-col
          wx:for="{{number}}"
          wx:key="index"
          data-key="{{item}}"
          custom-class="number-item"
          span="{{item === 0 ? '16' : '8'}}"
          bindtap="tapNumber">
          <view class="number-item__key tap-key">{{item}}</view>
        </van-col>
      </van-row>
      <view class="operation">
        <view class="del tap-key" bindtap="tapBksp">
          <image class="del-icon" src="/assets/backspace.png"></image>
        </view>
        <view class="confirm tap-key" bindtap="confirm">确定</view>
      </view>
    </view>
  </view>
</van-popup>

js 内容

Page({
  data: {
    score: '',
    keyboardShow: false,
    value: '',
    number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '.']
  },
  tapScore() {
    this.setData({
      keyboardShow: true
    })
  },
  onClose() {
    this.setData({
      keyboardShow: false
    })
  },
  // number点击
  tapNumber(e) {
    const { key } = e.currentTarget.dataset
    let { value } = this.data
    value += key
    /**
     * 限制输入
     * 开头不能是小数点
     * 只能有一位小数点
     * 0开头只能跟小数点
     * 小数点后限制一位
     */
    value = String(value)
            .replace(/^\./g, '')
            .replace('.', '$#$')
            .replace(/\./g, '')
            .replace('$#$', '.')
            .replace(/^00$/, '0')
            .replace(/^0(\d)/g, '$1')
            .replace(/^(-)*(\d+)\.(\d{1}).*$/, '$1$2.$3')

    this.setData({
      value
    })
  },
  // 退格
  tapBksp() {
    let { value } = this.data
    value = String(value)
    value = value.substr(0, value.length - 1)
    this.setData({
      value
    })
  },
  // 确定
  confirm() {
    let { value } = this.data
    this.setData({
      score: value,
      keyboardShow: false
    })
  },
})

wxss 样式


.keyborad .number-keyboard {
  display: flex;
  background-color: #ebedf0;
  padding: 20rpx 20rpx 0 20rpx;
}
.keyborad .number-keyboard .tap-key:active {
  opacity: 0.8;
}
.keyborad .number-keyboard .number {
  flex: 1;
}
.keyborad .number-keyboard .number .number-item {
  margin-bottom: 20rpx;
}
.keyborad .number-keyboard .number .number-item .number-item__key {
  background-color: #fff;
  text-align: center;
  height: 80rpx;
  line-height: 80rpx;
  border-radius: 8rpx;
  font-size: 32rpx;
  font-weight: 700;
}
.keyborad .number-keyboard .operation {
  width: 200rpx;
  display: flex;
  flex-direction: column;
  margin: 0 0 20rpx 20rpx;
}
.keyborad .number-keyboard .operation .del {
  height: 80rpx;
  text-align: center;
  margin-bottom: 20rpx;
  background-color: #fff;
  border-radius: 8rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}
.keyborad .number-keyboard .operation .del .del-icon {
  width: 40rpx;
  height: 40rpx;
}
.keyborad .number-keyboard .operation .confirm {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #04943f;
  border-radius: 8rpx;
  color: #fff;
  font-size: 36rpx;
}
.keyborad .van-field__control--disabled {
  color: #666 !important;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三章:Seed,Expand and Constrain:——种子、扩展和约束:弱监督图像分割的三个原则

0.摘要 我们引入了一种新的损失函数&#xff0c;用于基于三个指导原则进行弱监督训练的语义图像分割模型&#xff1a;使用弱定位线索进行种子标记&#xff0c;根据图像中可能出现的类别信息扩展对象&#xff0c;将分割结果约束在物体边界上。我们通过实验证明&#xff0c;使用所…

【C++模板进阶】

目录 一、模板使用时的一个小注意点二、非类型模板参数三、类模板的特化3.1函数模板的特化3.2类模板的特化3.2.1全特化3.2.2偏特化 四、模板的分离编译4.1模板不支持分离编译4.2模板分离编译报错的分析4.2解决方案 五、模板的总结 一、模板使用时的一个小注意点 在使用模板时&…

创建Electron项目

一、使用vite 构建 electron项目 npm init vitelatest Need to install the following packages:create-vitelatest Ok to proceed? (y) y √ Project name: ... CertificateDownload √ Package name: ... certificatedownload √ Select a framework: Vue √ Select a var…

java正则表达式「.*?」匹配什么

先说结论&#xff1a;以非贪婪的方式匹配正则表达式".*" 举例子&#xff1a; String s "abdcababc"; String regx1 "ab(.*)c"; String regx2 "ab(.*?)c"; Pattern pattern1 Pattern.compile(regx1); Pattern pattern2 Pattern…

分组排序及首单时间计算

import pandas as pd import numpy as np downpath/Users/kangyongqing/Downloads/ downfile20230725_105033.csvddpd.read_csv(downpathdownfile) dd.rename(columns{student_user_id:学生id},inplaceTrue) result[] for i in range(dd.shape[0]):user,feetimedd.loc[i,[学生…

AES-CTR加密模式介绍 例题

文章目录 CTR&#xff08;Counter mode&#xff0c;CTR&#xff09;计数器模式题目一题目描述&#xff1a;题目分析&#xff1a; 浅记一下 CTR&#xff08;Counter mode&#xff0c;CTR&#xff09;计数器模式 原理&#xff1a; CTR将块密码变为流密码。它通过递增一个加密计数…

防御第三天

1.总结当堂NAT与双机热备原理&#xff0c;形成思维导图 2.完成课堂NAT与双机热备实验 fw1: <USG6000V1>sy [USG6000V1]int g0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.18.2 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit (地址无所谓&…

NVM下安装NPM、CNPM详解与坑不是内部命令

设置npm的全局安装路径&#xff1a;有了可以不设置 npm config set prefix "H:\A-work\nvm\npm"C盘用户文件夹&#xff08;C:\Users[name]&#xff09;下会生成一个.npmrc的文件&#xff0c;用记事本打开后可以看到如下内容&#xff1a; 配置环境变量&#xff08;重…

Sip IP网络对讲广播模块,sip网络寻呼话筒音频模块

Sip IP网络对讲广播模块&#xff0c;sip网络寻呼话筒音频模块 模块介绍 SV-2401VP和SV-2403VPIP网络对讲广播模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编…

AdaBoost的求解流程

对于任意Boosting算法&#xff0c;都需要明确以下几点&#xff1a; ① 损失函数&#x1d43f;(&#x1d465;,&#x1d466;)的表达式是什么&#xff1f;损失函数如何影响模型构建&#xff1f; ② 弱评估器&#x1d453;(&#x1d465;)是什么&#xff0c;当下boosting算法使用…

这是一个小程序求助帖

求助帖 请问各位大佬们&#xff0c;在vscode中运行android模拟器&#xff0c;报错&#xff1a;执行emulator命令失败, 错误信息&#xff1a;Error: spawn C:\WINDOWS\system32\cmd.exe ENOENT 该如何解决。环境变量什么的我都已经配置过了&#xff0c;电脑也重启过了&#xff…

Rman配置参数详解

using target database control file instead of recovery catalog指的是使用目标数据库控制文件代替恢复目录 1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default 设置rman备份过期条件&#xff1a;是用来决定那些备份不再需要了&#xff0c;它一共有三种可选项&…

mybatisPlus之自动填充功能及防全表更新与删除插件

自动填充功能 基本介绍 Mybatis-plus自动填充功能是指在数据库表进行增、删、改、查操作时&#xff0c;自动将某些字段的值进行填充。这些字段的值可以是当前时间、登录用户ID等。 在项目中有一些属性&#xff0c;如果我们不希望每次都填充的话&#xff0c;我们可以设置为自…

Cilium系列-5-Cilium替换KubeProxy

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

数字身份、分布式存储、跨链技术等将如何推动Web3数据的发展?

Web3数据是基于区块链技术、去中心化、可信任的数据&#xff0c;具有较高的安全性和可信度。随着Web3.0时代的到来&#xff0c;Web3数据将会在金融、物联网、医疗、教育、政务等领域发挥重要的作用。其中&#xff0c;数字身份、分布式存储、跨链技术等将会是Web3数据发展的重要…

【教学类-34-07】20230726拼图(彩色图片+菱形凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)

作品展示&#xff1a; 背景需求 我尝试将拼图的“圆形凹凸角”变成"正方形凹凸角”&#xff0c;没有成功&#xff0c;但做出了“菱形凹凸角”。 实用性思考&#xff1a; 1、这种菱形凹凸角与正方形结构近似&#xff0c;裁剪难度中等&#xff08;比圆角容易剪&#xff0…

100天软件设计师备考计划

我已经毕业并且刚刚开始工作&#xff0c;目前在一家小公司从事Java开发工作。虽然我的工作轻松&#xff0c;但我希望在空闲时间里能够提升自己。由于我的专业与计算机相关&#xff0c;我有一定的基础&#xff0c;因此我计划在2023年用100天的时间考取软件设计师资格。在学习的过…

GB/T 25000.51解读——软件产品的易用性怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…

怎么在电脑中创建虚拟加密磁盘?

在生活和工作中&#xff0c;我们可以将重要数据存放在电脑加密磁盘中。可是不是每个电脑都拥有加密磁盘的。那么我们该怎么在电脑中创建虚拟加密磁盘呢&#xff1f; 将普通磁盘加密 我们可以将重要数据分类存放在一个磁盘中&#xff0c;随后将该磁盘加密&#xff0c;使其变成加…

Mac 快速生成树形项目结构目录

我这里使用的是通过包管理 Homebrew安装形式。没有安装的话可以自行搜索 Homebrew 安装方式 brew install tree直接到项目的根目录执行 tree 命令 tree 效果如下&#xff1a; or &#xff1a; tree -CfL 3效果如下&#xff1a;