input textarea 禁止输入 非数字,特别是中文字符,光标位置保持不变

思路:禁止输入 主要是用 keydown事件限制 不让输入即可,主要是输入中文的时候,之前没弄过。

禁止中文输入思路

由于input禁止不了中文的输入,所以改为watch value解决

  1. 在 onKeyDownHandle 记录下 输入时候的光标位置 ssOld(selectionStart Old)
  2. watch value的时候,看下是否是非法字符,如果是非法字符,就setSelectionRange 之前的光标位置 ssOld

完美解决。

<Input v-model="innerValue"
:disabled="disabled"
v-show="!divShow"
class="nianyueInput2Class"
:class="classes"
ref="nianyueInput2Ref"
type="textarea"
:maxlength="8"
@on-blur="inputOnBlurHandle"
@on-keydown.tab="onkeydownTabHandle"
@on-keydown="onKeyDownHandle"
placeholder=""
style="width: 100%; height: 52px;" />
watch: {
value (val) {
this.innerValue = val
this.$nextTick(() => {
this.innerValue = clearSpot(val)
this.$nextTick(() => {
if (clearSpot(val) !== val) { // 有非法字符的时候 恢复光标
this.$refs.nianyueInput2Ref.$refs.textarea.setSelectionRange(this.ssOld, this.ssOld)
}
}) console.info('this.innerValue -- ', this.innerValue)
})
},
innerValue (val) {
console.info('watch NianyueInput2 innerValue', val) this.$emit('input', val)
}
},
onKeyDownHandle (event) {
this.ssOld = this.$refs.nianyueInput2Ref.$refs.textarea.selectionStart
console.info('this.ssOld', this.ssOld)
onKeyDownHandle(event)
},

其他函数

export const clearSpot = dateStr => {
// return dateStr.replace(/[&\|\\\*^%$#@\-.]/g, '')
return dateStr.replace(/[^0-9]/ig, "")
} export const onKeyDownHandle = (event) => {
// 只允许输入纯数字
console.info('onKeyDownHandle event.keyCode', event.keyCode)
// const allowedCharacters
const k = event.keyCode
if ((k >= 48 && k <= 57) || (k >= 96 && k <= 105) || k === 8 || k === 46 || k === 9 || k === 37 || k === 39) {
// 允许输入
} else {
event.returnValue = false
}
}

input textarea 禁止输入 非数字,特别是中文字符,光标位置保持不变 - vue2的更多相关文章

  1. 控制input框输入非数字

    <input type="text" onkeyup="value=value.replace(/[^\d.]/g,'')">

  2. 【JS】数字转大写中文

    原文参考 逛到一道面试题,数字转大写中文的,搜索学习并记录于此. //自动转换数字金额为大小写中文字符,返回大小写中文字符串,最大处理到999兆 function changeMoneyToChine ...

  3. textarea在光标位置插入文字

    最近开发类似计算器界面,需要在textarea中编辑公式,涉及到 在光标位置插入 字符. 效果如下: + - * / 添加文字 // html代码如下: <!doctype html> & ...

  4. input框只能输入整数和浮点数非数字就不输入

    <input type="text" onInput="clearNoNum(this)" > //需引入jquery <script> ...

  5. input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格

    以下代码:input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格 //input验证码框,输入非数字或非12位时,红框提示;每3位加一个空格 $(".text"). ...

  6. PHP字母数字验证码和中文验证码

    1:字母数字组合的验证码 HTML代码: 验证码:<input type="text" name="code"> <img onclick=& ...

  7. 【JS】input输入框只能输入数字

    一.实现思路 input只能输入纯数字的思路其实很简单,监听输入框值的变化,每次输入检索输入框的值,将非数字的字段替换成空,再将此值赋予给输入框. 关键代码: \d:匹配数字 ^/d:全文匹配非数字 ...

  8. 设置输入域(input/textarea)中文本光标的位置

    以前记录了一篇 将光标定位于输入框最右侧的实现方式 ,实现光标定位在文本的最末.这种需求往往在修改现有的文本.有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法. 这个方法 ...

  9. 实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)

    document.getElementById("<%=textBox1.ClientID %>").value 实现textarea限制输入字数(包含中文只能输入10 ...

  10. PHP 向 MySql 中数据修改操作时,只对数字操作有效,非数字操作无效,怎么办?

    问题描述:   用PHP向MySql数据库中修改数据,实现增删改(数据库能正确连接) 经测试,代码只能对数字进行正常的增删改操作,非数字操作无效   但要在课程名称中输入中文,应该如果修改呢?   存 ...

随机推荐

  1. 14.3 Socket 字符串分块传输

    首先为什么要实行分块传输字符串,一般而言Socket套接字最长发送的字节数为8192字节,如果发送的字节超出了此范围则后续部分会被自动截断,此时将字符串进行分块传输将显得格外重要,分块传输的关键在于封 ...

  2. MySQL 存储过程与函数(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...

  3. Linux-grep或和与操作

    一.或(or)操作1.使用选项 -Egrep -E 'a1|a2'filename // 找出文件(filename)中包含a1或者包含a2的行 2.使用egrepegrep 'a1|a2' file ...

  4. HGAME 2024 WEEK2 Crypto Misc

    CRYPTO midRSA 题目描述:兔兔梦到自己变成了帕鲁被crumbling抓去打黑工,醒来后连夜偷走了部分flag from Crypto.Util.number import * from s ...

  5. Power BI 15 DAY

    业务(表结构)数据分析 1.业务理解 准确 全面 2.数据收集 了解需要用到的数据有哪些 5W2H 结构化数据 SQL.通过查询获取数据库资源 多源表结构数据 企业数据库数据 文本文件数据 Excel ...

  6. ARM 中SP,LR,PC寄存器的作用

    ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...

  7. 玩转 CMS

    玩转 CMS 目前接手的内容管理系统(CMS)基于 ant-design-vue-pro(简称模板项目或ant-vue-pro) 开发的,经过许多次迭代,形成了现在的模样(简称本地项目). 假如让一名 ...

  8. SpringBoot 2.6 和 JUnit 5 的测试用例注解和排序方式

    JUnit5 的测试注解 在JUnit5中, 不再使用 @RunWith 注解, 改为使用 @ExtendWith(SpringExtension.class) @ExtendWith(SpringE ...

  9. 【Unity3D】角色控制器(CharacterController)

    1 简介 ​ 控制角色移动的组件主要有:Transform 组件.Rigidbody 组件.CharacterController 组件.Transform 组件通过控制角色位置实现移动,Rogidb ...

  10. centos 安装nacos 并以后台服务形式启动

    一.下载解压nacos tar -xvf nacos-server-1.2.0.tar.gz 二.持久化配置(mysql) 修改nacos/conf/application.properties文件, ...