位置: 编程技术 - 正文

关于JavaScript限制字数的输入框的那些事(js限制数组长度)

编辑:rootadmin

推荐整理分享关于JavaScript限制字数的输入框的那些事(js限制数组长度),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:关于js的描述错误的是,以下关于js函数说法错误的是,关于javascript的说法,下列关于javascript的叙述正确的有,下列关于javascript的叙述正确的有,关于javascript的说法,关于javascript的说法,关于javascript的说法,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近产品需要做不少输入框,产品想要的交互效果是:用户可以输入中英文,随着用户输入能实时显示已经输入的字符个数,当超过数量限制时输入框边框变红,同时给用户提示信息。

这交互听起来没啥问题,技术实现上似乎也没啥难点。但是当我实现出来以后遇到中文输入法就有坑了。

怎么个坑呢,且看下文~~

实时监测输入框内容长度所遇到的坑使用 oninput事件来监听

使用这个oninput事件的好处有2个:

当用户通过右键复制改变输入框内容时,可以监听到;

只有在输入框内容发生变化时才会触发此事件,比如用户按下方向键、control/shift 等这些控制字符键时此事件是不会触发的;

当你输入英文字符或者数字时效果完美,甚至在你正常输入中文时也效果完美。但当你非正常输入中文时就出现 bug 了。非正常输入是怎样的呢?看下面这张示例图:

看到了吗,在这种中文输入方式下,其实用户还没有输入他想输入的中文,只是输入了几个拼音,但 input 事件被触发了,而且监听到的输入框value居然是d'd'd,不单单是拼音字符,还包括了分隔的点。假如输入框内容长度被限制为不超过5,那么在截图这种情况下,就会提示用户字符长度超过限制!。这样的交互效果当然不是产品想要的。

使用onkeydown/onkeypress/onkeyup事件来监听

这几个事件的缺点是无法监听右键复制而来的输入内容,但是否也会存在与input事件一样的问题呢?

我做了几个实验,发现keydown、keyup都会遇到和 input一样的问题,但keypress没有这个问题,因为在中文输入状态下,keypress不会触发,不单是你输入拼音的过程中不会触发,等你选中所要输入的中文如“对对对”后也不会触发。那么当输入“对对对”后虽然超过了字符限制但无法给出字符长度超过限制!的提示。

折中解决方法

要想做到实时监测内容长度,又想保证中文输入法状态下没有 bug,我折腾了好久最后发现 臣妾做不到呀!(要是哪位豪杰找到了,一定要告诉我呀~~)。

关于JavaScript限制字数的输入框的那些事(js限制数组长度)

所以最后牺牲了下用户体验,找到了一个折中的方式:输入框失去焦点时(即blur),或者用户输入回车键时才进行内容长度的检测。当然如果发现输入框内容超过限制,要将光标停留在输入框内,方便用户进行修改。

哎,一说到用户输入回车键时才进行内容长度的检测又得说说以前栽的坑了

输入框中如何检测输入了回车键

其实这是一个很常见的交互,比如修改名称时支持用户输入回车后直接保存、登录时支持用户输入回车后直接登录。但其中要小心的坑是:**中文输入法下按回车键来输入英文字符**。

中文输入法下按回车键来输入英文字符的过程举例:

比如我要输入账号进行登录,我的账号是全英文的,我当前处于中文输入法,但我懒得切换输入法,于是我就直接敲了我的账号(全英文字符),这时搜狗输入法给我提示了一大串中文,然后我按了个回车,输入框就输入了我想要的英文字符。

在这种情况下,用户虽然输入了回车键,但用户按下回车键只是想在中文输入法下输入英文字符而已,这个回车键并不是我们想要监听的回车键。那么怎么排除这种情况下的回车键呢?

一般来说监听回车键我们会用keydown事件或者keyup事件,实现代码如下所示。那么是否这两种方法都能过滤掉我们不想监听的回车键呢?

经过试验发现:使用keydown是可以成功过滤的,但使用keyup不能。

那么我们来看看为什么?

是因为在keydown事件中:中文输入法状态下输入的回车键,检测的 keyCode为 而不是;单纯输入一个回车时,keyCode才是。

而在keyup事件中:中文输入法状态下输入的回车键,检测的 keyCode是;单纯输入一个回车时,keyCode也是。

下图是我打印在 console 中的结果:(代码示例见这里)

结语

关于输入框涉及到的几个事件:keydown/keyup/keypress/input/change

查看这里:

自动化测试读写位操作系统的注册表 非Web程序(桌面程序)的设置一般都存在注册表中。给这些程序做自动化测试时,需要经常要跟注册表打交道。通过修改注册表来修改程序的设置。本

javascript深拷贝(deepClone)详解 javascript深拷贝是初学者甚至有经验的开发着,都会经常遇到问题,并不能很好的理解javascript的深拷贝。深拷贝(deepClone)?与深拷贝相对的就是浅拷贝,

Javascript中indexOf()和lastIndexOf应用方法实例 indexOf()方法indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。注释:indexOf()方法对大小写敏感!注释:如果要检索的字符串值没有出

标签: js限制数组长度

本文链接地址:https://www.jiuchutong.com/biancheng/373573.html 转载请保留说明!

上一篇:谈谈JavaScript中的几种借用方法(请问在javascript程序中)

下一篇:自动化测试读写64位操作系统的注册表(自动化测试读写题答案)

  • 去税局更正申报需要什么资料,忘记带营业执照
  • 法人能把公司账户的钱都转走么
  • 中介公司报税怎么操作
  • Xm公司为增值税小规模纳税企业
  • 商业承兑汇票利息什么时候支付
  • 国有企业党组织工作应遵循的原则包括
  • 预算控制方法主要包括
  • 劳务派遣用工的岗位只能在哪些工作岗位上实施
  • 闲置土地归谁管理
  • 研发支出费用化支出包括哪些
  • 出口退税当期不得免征和抵扣的税额
  • 新公司前几个月发工资
  • 子公司之间固定资产转让
  • 商贸有限公司要报地税吗
  • 增值税实际缴纳总额
  • 企业所得税季度预缴纳税申报表
  • 以货抵债会计处理
  • 记账凭证汇总表和汇总记账凭证有什么区别
  • 房产评估增值部门有哪些
  • 增值税一般纳税人认定标准
  • 信息技术包括哪几个方面
  • 生产车间消耗品管理表
  • 企业一次性支付多年费用 不摊销
  • 已经计提工资后怎么做账
  • 纳税人依法可以享受减免税待遇而没有享受的
  • 侵权行为 法律行为
  • 苹果mac os 10.4
  • sec是什么文件
  • 收回前欠货款会导致资产总额增加吗
  • 对账小技巧
  • 建设期需要流动资金吗
  • 小规模纳税人超标认定一般纳税人
  • 史密斯理工学院
  • 劳务公司差额计税的税率
  • 资产负债表是不是根据记账凭证生成的
  • 前端的基础知识
  • html多页面
  • 金融机构存放的保证金存款
  • 建筑企业异地预缴增值税销售额含税吗
  • 三类职业指的是什么
  • 小规模纳税人增值税账务处理
  • 公司进项抵税
  • 计入固定资产成本的税费有哪些
  • 股东入股资金如何记账
  • 模板的固定
  • SQL Server 2012 开窗函数
  • 以摊余成本计量的债权投资与以公允价值计量且其变动
  • 企业所得税是指哪些
  • 工程管理服务属于哪个行业
  • 固定资产转让损失怎么算
  • 投标保证金怎么记账科目
  • 商业医疗保险的缺点
  • 待抵扣税额怎么做分录
  • 应收账款较多怎么办
  • mysql 索引 语句
  • sql中的非逻辑
  • xp系统许多网页打不开
  • openstack 创建云主机,计算节点磁盘不足
  • dlg是什么意思中文
  • linux创建makefile
  • linux中sed
  • linux 常用 命令
  • linux如何使用gcc编程
  • win8.1使用教程
  • win7系统存储在哪
  • compress与uncompress参数使用
  • win 7关闭睡眠
  • win10系统开机蓝屏,重启就好
  • unity获取mesh网格数据
  • [置顶]游戏名:chivalry2
  • jquery移动节点的方法
  • 查看linux中某个端口(port)是否被占用的方法
  • nodejs libuv
  • 解决在基层
  • the oculus rift
  • javascript总结笔记
  • 江苏省全电发票开通流程
  • 延期申报预缴税款滞纳金问题
  • 河南旧县为什么叫新县
  • 汽车燃油税每年要交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设