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)的更多相关文章

  1. 如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘【转】

    转自:https://blog.csdn.net/lanmanck/article/details/8423669 相信各位使用嵌入式的都希望直接读取键值,特别是芯片厂家已经提供input驱动的情况下 ...

  2. 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();

    原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...

  3. JavaScript Event Delegation, and event.target vs. event.currentTarget

    原文:https://medium.com/@florenceliang/javascript-event-delegation-and-event-target-vs-event-currentta ...

  4. Javascript中event.srcElement和event.target的区别

    event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称.注意获取的标记都以大写表示,如"TD",&qu ...

  5. javascript中event.clientX和event.clientY用法的注意事项

    今天做项目用到了event.clientX和event.clientY,给元素定位,用定位的时候,让top和left等于事件元素的的坐标 <!DOCTYPE html> <html& ...

  6. C# 如何添加自定义键盘处理事件 如何配置app.config ? | csharp key press event tutorial and app.config

    本文首发于个人博客https://kezunlin.me/post/9f24ebb5/,欢迎阅读最新内容! csharp key press event tutorial and app.config ...

  7. JavaScript初探系列(十)——Event

    一.绑定事件的两种方式 (一).方式一:onclick 举例: <body> <button>点我</button> <script> var btn ...

  8. javascript 自定义事件 发布-订阅 模式 Event

    * javascript自定义事件 var myEvent = document.createEvent("Event"); myEvent.initEvent("myE ...

  9. javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法

    clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...

随机推荐

  1. SQL Server进阶(十)事务和并发处理

    1 https://www.cnblogs.com/edisonchou/p/6129717.html

  2. MySQL的一些基本命令笔记(1)

    关系型数据库的建模构建块: 1.数据是以行和列的形式存储数据. 2.这一系列的行和列称为表(关系) 3.表中的每一行表示一条记录(元组) 4.表中的每一列表示记录的一个属性 5.一组表组成了数据库 6 ...

  3. 三十五、minishell(3)

    35.1 内容 在当前的 minishell 中,如果执行 date clear 命令等,minishell 会停止: 这是因为引入进程组的时候,mshell 放置在前台进程组,同时之后在子进程中又创 ...

  4. GCC编译器原理(一)------交叉编译器制作和GCC组件及命令

    1.1 交叉编译器制作 默认安装的 GCC 编译系统所产生的代码适用于本机,即运行 GCC 的机器,但也可将 GCC 安装成能够生成其他的机器代码.安装一些必须的模块,就可产生多种目标机器代码,而且可 ...

  5. 六、文件IO——fcntl 函数 和 ioctl 函数

    6.1 fcntl 函数 6.1.1 函数介绍 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd ...

  6. luogu P4156 [WC2016]论战捆竹竿

    传送门 官方题解(证明都在这) 神仙题鸭qwq 转化模型,发现这题本质就是一个集合,每次可以加上集合里的数,问可以拼出多少不同的数 首先暴力需要膜意义下的最短路,例题戳这 然后这个暴力可以优化成N^2 ...

  7. Hive通过mysql元数据表删除分区

    1 创建表 hive命令行操作 CREATE TABLE IF NOT EXISTS emp( name STRING, salary FLOAT, subordinates ARRAY<STR ...

  8. struts2简单入门-关于Result标签Type属性的说明

    Result标签 作用 当action执行完毕,后要返回什么样的视图. Type属性 决定返回的是什么视图. struts-default.xml的Type属性的定义 <result-types ...

  9. scss转css的过程中 转化问题

    如果  在转化过程中语法没有问题的话    测试一下是否是文件的bom头的问题

  10. SqlServer_存储过程

    1.查询全部数据 create proc stu1 as begin select * from Students end go exec stu1 2.根据姓名查询信息 --存储过程内部自带值cre ...