input textarea 禁止输入 非数字,特别是中文字符,光标位置保持不变 - vue2
input textarea 禁止输入 非数字,特别是中文字符,光标位置保持不变
思路:禁止输入 主要是用 keydown事件限制 不让输入即可,主要是输入中文的时候,之前没弄过。
禁止中文输入思路
由于input禁止不了中文的输入,所以改为watch value解决
- 在 onKeyDownHandle 记录下 输入时候的光标位置 ssOld(selectionStart Old)
- 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的更多相关文章
- 控制input框输入非数字
<input type="text" onkeyup="value=value.replace(/[^\d.]/g,'')">
- 【JS】数字转大写中文
原文参考 逛到一道面试题,数字转大写中文的,搜索学习并记录于此. //自动转换数字金额为大小写中文字符,返回大小写中文字符串,最大处理到999兆 function changeMoneyToChine ...
- textarea在光标位置插入文字
最近开发类似计算器界面,需要在textarea中编辑公式,涉及到 在光标位置插入 字符. 效果如下: + - * / 添加文字 // html代码如下: <!doctype html> & ...
- input框只能输入整数和浮点数非数字就不输入
<input type="text" onInput="clearNoNum(this)" > //需引入jquery <script> ...
- input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格
以下代码:input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格 //input验证码框,输入非数字或非12位时,红框提示;每3位加一个空格 $(".text"). ...
- PHP字母数字验证码和中文验证码
1:字母数字组合的验证码 HTML代码: 验证码:<input type="text" name="code"> <img onclick=& ...
- 【JS】input输入框只能输入数字
一.实现思路 input只能输入纯数字的思路其实很简单,监听输入框值的变化,每次输入检索输入框的值,将非数字的字段替换成空,再将此值赋予给输入框. 关键代码: \d:匹配数字 ^/d:全文匹配非数字 ...
- 设置输入域(input/textarea)中文本光标的位置
以前记录了一篇 将光标定位于输入框最右侧的实现方式 ,实现光标定位在文本的最末.这种需求往往在修改现有的文本.有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法. 这个方法 ...
- 实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)
document.getElementById("<%=textBox1.ClientID %>").value 实现textarea限制输入字数(包含中文只能输入10 ...
- PHP 向 MySql 中数据修改操作时,只对数字操作有效,非数字操作无效,怎么办?
问题描述: 用PHP向MySql数据库中修改数据,实现增删改(数据库能正确连接) 经测试,代码只能对数字进行正常的增删改操作,非数字操作无效 但要在课程名称中输入中文,应该如果修改呢? 存 ...
随机推荐
- Flask Paginate实现表格分页
flask_paginate 是 Flask 框架的一个分页扩展,用于处理分页相关的功能.它可以帮助你在 Flask Web 应用程序中实现分页功能,让用户可以浏览大量数据的不同部分.本篇博文重点讲述 ...
- Python通过SNMP监控网络设备
前段时间,为了实现自动化巡检,我开发了自动化巡检工具,由于我的系统设备版本比较多,所以我是分别开发的客户端程序,服务端使用dll文件与客户端通信,服务端的dll在与python通信,通过Python丰 ...
- 仅1cm厚!华硕发布全球最薄13.3英寸笔记本
近日,华硕发布了新款Zenbook S 13 OLED,官方称其为世界最纤薄的13.3英寸OLED笔记本电脑. 据悉,这款电脑的厚度仅有1cm,重量也仅有1kg,相较其他同尺寸的笔记本,确实更加轻薄. ...
- 【栈和队列】栈和队列的相互实现OJ练习【力扣-232、力扣-225】超详细的保姆级别解释
[栈和队列]栈和队列的相互实现OJ练习[力扣-232.力扣-225]超详细的保姆级别解释 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 ...
- 【LLM】提示工程技术提炼精华分享
一.提示工程概述 提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域 ...
- Linux通过fdisk或者parted进行磁盘分区,然后格式化和挂载磁盘
磁盘分区是Linux的常用命令,其中fdisk和parted命令最为常用.但是当磁盘大于2T时,fdisk只能分到2T. 比如4T的磁盘,fdisk只能分2T的主分区出来,parted可以直接分成4T ...
- JS Leetcode 155. 最小栈 题解分析
壹 ❀ 引 本题来自LeetCode155. 最小栈,难度简单,题目描述如下: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x ...
- Apache HTTP Server、IIS反向代理设置
Apache HTTP Server 在 Apache 中设置反向代理,需要使用 mod_proxy 和相关的模块,如 mod_proxy_http.以下是一个基本的配置示例: 确保已经安装并启用了 ...
- CF-928(已更新:B C E)
CF-928 排名四千多,目前为止排名最高的一场~ E题我赛时基本上是猜的结论(但是也推了快一小时才想到有这个可能性),因此目前只能放个码在这(⊙﹏⊙) D的话问了学长思路,正在补了0-^-0 --但 ...
- elasticsearch should实现or功能,设置minimum_should_match
elasticsearch实现传统数据库中的or功能,需要使用bool下面的should关键字,对于A or B的情况,应该至少返回A和B中的一个,但是如下语句,不仅返回A和B中的至少一个,也返回了没 ...