JavaScript 输入小数点(event.key或event.code)
1. 概述
1.1 说明
在开发过程中,有时候需要仅输入数字与小数,故记录下使用过的功能,以便后期使用。
1.2 key
定义:按下按键时返回的标识符,按键标识符是表示键盘按钮的字符串(如1,2,a等)。
使用:event.key去获取按下按键的字符串。
1.3 keyCode
定义:按下按键时此按键值所对应的字符代码(如ESC键为27)。
使用:event.keyCode去获取按下按键的字符码。
备注:此功能已废弃,但是仍然可以使用。
2. 示例
2.1 js代码
/**
* 输入为小数
* @param event 事件
* @param allowPoint 是否包含小数点
**/
function inputNumber (event, allowPoint) {
let bInputTrue = false;
if (event.key !== undefined) {
let arrNumber = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "Backspace", "Delete","Shift"];//数字键盘与删除键
let arrTopNumber = ["Digit0", "Digit1", "Digit2", "Digit3", "Digit4", "Digit5", "Digit6", "Digit7", "Digit8", "Digit9"];//中文_上边数字键盘
let arrNumNumber = ["Numpad1", "Numpad2", "Numpad3", "Numpad4", "Numpad5", "Numpad6", "Numpad7", "Numpad8", "Numpad9"];//中文_右边数字键盘
if (allowPoint) {
arrNumber.push(".");
arrTopNumber.push("Period");
arrTopNumber.push("NumpadDecimal");
}
if(event.key=="Process"){
for (let i = 0; i < arrTopNumber.length; i++) {
if (event.code == arrTopNumber[i]) {
bInputTrue = true;
break;
}
}
if(bInputTrue ==false ){
for (let i = 0; i < arrNumNumber.length; i++) {
if (event.code == arrNumNumber[i]) {
bInputTrue = true;
break;
}
}
}
} else {
for (let i = 0; i < arrNumber.length; i++) {
if (event.key == arrNumber[i]) {
bInputTrue = true;
break;
}
}
} } else if (event.keyCode !== undefined) {
let charCode = event.keyCode;
let bCondition1 = charCode >= 48 && charCode <= 57; //数字
let bCondition2 = charCode >= 96 && charCode <= 105; //小键盘数字
let bCondition3 = charCode == 46 || charCode == 8; //两个删除键 let decimalPoint = charCode == 110 || charCode == 190;//小数点
let bCondition = null;
let bShift = event.shiftKey == 1; if (allowPoint) {
bCondition = bCondition1 || bCondition2 || bCondition3 || decimalPoint;
} else {
bCondition = bCondition1 || bCondition2 || bCondition3;
}
if (bCondition && !bShift) {
bInputTrue = true;
} else {
bInputTrue = false;
}
}
if (bInputTrue) {
return true;
} else {
document.activeElement.blur();//使失去焦点
if (event.preventDefault) {
event.preventDefault();//中文情况下不起作用
}
else {
event.returnValue = false;
}
}
}
注意:代码 document.activeElement.blur(); 会使输入框焦点失去,故此处可考虑是否使用。
2.1 html代码
<input onkeydown="inputNumber(event,true)" onpaste="return false" ondragenter="return false" oncontextmenu="return false;" style="ime-mode:disabled">
JavaScript 输入小数点(event.key或event.code)的更多相关文章
- 如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘【转】
转自:https://blog.csdn.net/lanmanck/article/details/8423669 相信各位使用嵌入式的都希望直接读取键值,特别是芯片厂家已经提供input驱动的情况下 ...
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...
- JavaScript Event Delegation, and event.target vs. event.currentTarget
原文:https://medium.com/@florenceliang/javascript-event-delegation-and-event-target-vs-event-currentta ...
- Javascript中event.srcElement和event.target的区别
event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称.注意获取的标记都以大写表示,如"TD",&qu ...
- javascript中event.clientX和event.clientY用法的注意事项
今天做项目用到了event.clientX和event.clientY,给元素定位,用定位的时候,让top和left等于事件元素的的坐标 <!DOCTYPE html> <html& ...
- C# 如何添加自定义键盘处理事件 如何配置app.config ? | csharp key press event tutorial and app.config
本文首发于个人博客https://kezunlin.me/post/9f24ebb5/,欢迎阅读最新内容! csharp key press event tutorial and app.config ...
- JavaScript初探系列(十)——Event
一.绑定事件的两种方式 (一).方式一:onclick 举例: <body> <button>点我</button> <script> var btn ...
- javascript 自定义事件 发布-订阅 模式 Event
* javascript自定义事件 var myEvent = document.createEvent("Event"); myEvent.initEvent("myE ...
- javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法
clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...
随机推荐
- VS2019预览版发布了
VS2019正式版已发布:https://www.cnblogs.com/zhaogaojian/p/10648904.html 1.点击下载https://visualstudio.microso ...
- Tensorflow Python 转 Java(一)
一.背景描述 最近python的tensorflow想办法给弄到线上去.网络用的Tensorflow现成的包.写篇博客,记录下过成.数据用kaggle中的数据为例子. 数据地址: https://ww ...
- pyqt5-QWidget坐标系统和大小
获取坐标和尺寸: 坐标的获取视频教程:https://v.qq.com/x/page/t085892mzh9.html x() y() 返回控件的坐标 相对于父控件的坐标(窗口框架左上角) ...
- Linux下运行jmeter
• 我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上 ...
- cxf方式实现webservice接口笔记
1.配置cxf的jar包依赖: 因maven中央仓库会自带cxf的相关依赖jar,故去maven官网搜索并获取pom配置到本地pom.xml文件即可,maven中央仓库搜索引擎地址:http://se ...
- Solr创建Core的两种方法
创建Core的两种方法: 第一种方法: 1.打开dos命令窗口,切换目录到${solr.home}\bin,然后输入:solr create -c corename之后回车: 2.打开solr安装文件 ...
- 20165221 2017-2018-2《Java程序设计》课程总结
20165221 2017-2018-2<Java程序设计>课程总结 一.作业连接汇总 每周作业链接 预备作业一: 20165221我期望的师生关系 预备作业二: 20165221学习基础 ...
- swap扩展
没有独立的分区,本地回环设备(使用软件来模拟实现硬件) 创建一个镜像文件 https://blog.csdn.net/linuxnews/article/details/51271875 有独立的分区
- delphi 控件集
delphi 控件集: 1)RAIZE 控件包 :http://www.raize.com/devtools/rzcomps/ 被收购 Raize Components has been ac ...
- 广联达 BIM5D 云平台---《建筑信息模型标准》解读
广联达 BIM5D 云平台: 1.用户管理: https://account.glodon.com/info 2.模型使用: http://bim5d-hunan.glodon.com/api/v ...