整数输入框 InputNumberIntZen.vue 只能输入整数 不能输入.等其他字符
这版的输入限制堪称完美 perfect!
20230712 更新 加入 onBlurHandle 如果输入的02 失焦的时候 变成2
<!--数字输入框 只能输入数字 整型 InputNumberIntZen.vue-->
<template>
<Input ref="inputRef"
:clearable="clearable"
:maxlength="maxlength"
:placeholder="placeholder"
v-model="innerValue"
:disabled="disabled"
@on-keydown="onKeyDownHandle"
@on-blur="onBlurHandle" />
</template>
<script>
import { keyList1 } from './keyListByInputNumberIntZen'
export default {
name: 'InputNumberIntZen',
props: {
placeholder: {
type: String,
default: '请输入'
},
maxlength: {
type: Number,
default: 10
},
clearable: {
type: Boolean,
default: false
},
value: {
type: String,
default: ''
},
disabled: {
type: Boolean,
default: false
}
},
components: {},
data () {
return {
innerValue: this.value.toString(),
keyList1
}
},
watch: {
value: function (val) {
console.info('watch value', val)
this.innerValue = this.value.toString()
},
innerValue: function (val) {
console.info('watch innerValue', val)
if (this.clearSpot(val) !== val) { // 有非法字符的时候 恢复光标 主要针对中文
const diff = this.getDiff(val, this.clearSpot(val))
console.info('diff', diff)
this.$nextTick(() => {
console.info('-- this.value', this.value, '-- this.innerValue', this.innerValue)
this.innerValue = this.value
this.$nextTick(() => {
this.$refs.inputRef.$refs.input.setSelectionRange(diff, diff)
})
})
} else {
if (this.clearSpot(val) === val) {
console.info('emit val', val)
this.$emit('input', val)
this.$emit('validateField') // 这句很重要
// 外层需要 每次 验证一下
// @validateField="$refs.internalTransferRef.validateField('undertakeNumber')"
}
}
}
},
computed: {},
methods: {
getDiff (str1, str2) {
let ret = 0
for (let i = 0; i < str1.length; i++) {
if (str1.substr(i, 1) === str2.substr(i, 1)) {
// next
} else {
ret = i
break
}
}
return ret
},
onKeyDownHandle (e) {
let across = this.keyList1.includes(e.keyCode)
// 这里只能拦截非中文 中文字符 watch拦截
if (!across) { // 只能输入整数
e.preventDefault()
return false
}
},
clearSpot (dateStr) {
return dateStr.replace(/[^0-9]/ig, '')
},
onBlurHandle () {
if (this.innerValue === '') {
return false
}
const n = Number(this.innerValue)
if (String(n) !== this.value) {
console.info('n', n)
this.$emit('input', String(n))
}
},
},
created () { },
activated () { },
mounted () { },
beforeDestroy () { }
}
</script>
<style>
</style>
// keyListByInputNumberIntZen.js
export const keyList1 = [
8, // 退格键
9, // tab
96, // 0
97, // 1
98, // 2
99, // 3
100, // 4
101, // 5
102, // 6
103, // 7
104, // 8
105, // 9
// 110, // . 数字类型带点,这里是整型的 所以把点就注释掉了
// 190, // .
46, // del
48, // 0
49, // 1
50, // 2
51, // 3
52, // 4
53, // 5
54, // 6
55, // 7
56, // 8
57, // 9
37, // left
39 // right
]
<InputNumberIntZen v-model.trim="modalData.myInt"
style="width: 100px;"
:maxlength="2"
placeholder="请输入0-99 整数" />
整数输入框 InputNumberIntZen.vue 只能输入整数 不能输入.等其他字符的更多相关文章
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金)
第一: 限制只能是整数 <input type = "text" name= "number" id = 'number' onkeyup= " ...
- js限制文本框只能输入整数或者带小数点[转]
这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- html input只允许输入整数
如果想想让input输入框只输入整数,直接使用以下的input就可以了 <input id="sequence" class="o_input" onke ...
- EditText 限制输入整数和小数 的位数
如题,本文主要说的就是 如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...
- JS-正则表达式 限制输入整数、小数
//只可以输入整数 onkeyup="value=value.replace(/[^\d]/g,'')" //可以输入数字 包括小数 onkeyup="value=val ...
- php实现 查找输入整数二进制中1的个数
php实现 查找输入整数二进制中1的个数 一.总结 一句话总结: 1.if($j&intval($num)){}的作用是什么? 1 <?php 2 while($num=trim(fge ...
- 代码实现程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印
package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...
- js 输入整数
1.我用 /^\+?[1-9][0-9]*$/ 貌似不对(小数也可以输入) 2.输入整数 n = /^[1-9]\d*$/; . -]\d*$/; //判断字符串是否为数字 if (!value) ...
- python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。
python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...
随机推荐
- QQ音乐转 mp3 格式的链接,不需要下载任何软件
一.打开QQ音乐的官网 QQ音乐-千万正版音乐海量无损曲库新歌热歌天天畅听的高品质音乐平台! 二.随便找一首歌播放 三.打开后,就可以使用了
- select * 的使用说明
一. SELECT * 的含义 select * 语句是从指定的表中按照顺序返回所有列. 二. SELECT * 的优缺点 1 优点 在实际开发过程中,大家习惯性地使用select * from ...
- 一个让java程序员有杀人的冲动的Xerces冲突问题
History Xerces是Java生态圈使用最广泛的XML解析器,基本上所有的类库和框架都会在一定程度上使用它(即使没有直接引用,也有可能间接引用) Xerces在官网中发布的包是没有标注版本的, ...
- nginx 基于IP的多虚拟主机配置
1.基于IP的多虚拟主机配置 1.1 网络配置 linux操作系统支持IP别名的添加. nginx 服务器提供的每台虚拟主机对应配置一个不同的IP,因此需要将网卡设置为同时能够监听多个IP地址. 先查 ...
- Ubuntu 20.04 出现 SSL_connect: error:1425F102 .. unsupported protocol问题的解决
在安装完Ubuntu 20.04后, 这个问题影响了好几个软件, 包括MySQL Workbench, Openfortigui等等, 出现的错误都是 ERROR: SSL_connect: erro ...
- Ubuntu在无网络环境下,用离线源apt-get安装软件
步骤概要如下: 1.假设目标安装的是服务器A,需先准备一台正常环境,且操作系统版本与A一致的服务器B: 2.用apt-get在服务器B上下载需要安装的包,并用dpkg-scanpackages依赖打包 ...
- VMWare“Could not get vmci driver version:句柄无效”的错误
这几天都不顺,从周一接手数据仓库的事,本来以为很简单,很快都能搞定,结果搞了一天没搞定,主要原因,自己觉得是系统底层搭建缺失个别库文件, 想换一个高一点版本的虚拟系统centos6.2结果又把虚拟机搞 ...
- Oracle 表压缩(Table Compression)技术介绍
Oracle 表压缩(Table Compression)介绍 1.官方文档说法: As your database grows in size, consider using table compr ...
- 华为OD请己经入职的人出来谈谈你的真实感受?
修改了一下回答的排版,之前只要更新就在最前面, 现在按照会见顺序重新整理了一下. 部门捞人 上海 深圳 西安 东莞 办公地 武汉南京现在也有 通道:点击通道2字 写在前面 总结一下我的体验其实挺好的, ...
- win32 - 计算位图所需的字节总数
BITMAPINFOHEADER文档详细介绍了所需要的步骤, 对于未压缩的RGB格式,最小跨度始终是图像宽度(以字节为单位),四舍五入到最接近的DWORD.可以使用以下公式来计算步幅: stride ...