JavaScript键盘事件

news2024/11/24 2:21:30

目录

一、keydown:按下键盘上的任意键时触发。

二、keyup:释放键盘上的任意键时触发。

三、keypress:在按下并释放能够产生字符的键时触发(不包括功能键等)。

四、input:在文本输入框或可编辑元素的内容发生改变时触发(包括键盘输入、粘贴、剪切等)。

五、compositionstart:在开始进行中文输入时触发。

六、compositionupdate:在进行中文输入时,每输入一个字符时触发。

七、compositionend:在结束中文输入时触发。


本文章简单介绍一下,JavaScript里面的键盘事件。

一、keydown:按下键盘上的任意键时触发。

keydown事件在JavaScript中用于响应键盘按下键的操作。它常用于实现以下场景:

1.捕获用户的按键操作:可以通过监听keydown事件来捕获用户按下的键,并执行相应的操作。例如,可以通过监听keydown事件来检测用户按下了特定的快捷键,然后执行相应的功能。

2.表单输入控制:可以利用keydown事件对用户的输入进行控制。例如,可以监听keydown事件,判断用户按下的键是否是数字键或字母键,以限制输入内容只能是数字或字母。

Keydown事件实例:

<script type="text/javascript">
	document.addEventListener("keydown", function(event) {
		// 判断按下的键是否是回车键(键码为13)
		if(event.keyCode === 13) {
			// 执行相应的操作,例如提交表单或执行搜索功能
			console.log("Enter key pressed!");
			// 在这里可以添加具体的逻辑代码
		}
	});
</script>

二、keyup:释放键盘上的任意键时触发。

keyup事件在JavaScript中用于响应键盘释放键的操作。它常用于实现以下场景:

1.捕获用户的键盘释放操作:可以通过监听keyup事件来捕获用户释放的键,并执行相应的操作。例如,在游戏开发中,可以利用keyup事件来检测玩家释放了特定的按键,然后更新游戏状态或执行相应的动作。

2.表单输入控制:可以利用keyup事件对用户的输入进行实时控制和验证。例如,可以监听keyup事件,检测用户在输入框中释放键后的输入内容,并进行输入合法性检查或实时搜索等操作。

<script type="text/javascript">
	// 监听键盘的keyup事件
	document.addEventListener("keyup", function(event) {
		// 判断释放的键是否是回车键(键码为13)
		if(event.keyCode === 13) {
			// 执行相应的操作,例如提交表单或执行搜索功能
			console.log("Enter key released!");
			// 在这里可以添加具体的逻辑代码
		}
	});
</script>

三、keypress:在按下并释放能够产生字符的键时触发(不包括功能键等)。

keypress事件在JavaScript中用于响应键盘按键的操作,并在按下键时触发。它常用于实现以下场景:

1.监听用户的实时输入:可以通过监听keypress事件来获取用户实时输入的内容,并进行处理。例如,在一个即时聊天应用中,可以利用keypress事件实时获取用户的输入内容,并将其显示在聊天窗口中。

2.实现快捷键操作:可以利用keypress事件捕获用户按下特定的快捷键,执行相应的操作。例如,在一个文本编辑器中,可以使用keypress事件监听用户按下Ctrl+S组合键,实现快速保存文档的功能。

需要注意的是,keypress事件在一些特定的情况下可能无法捕获到所有的按键,例如功能键和组合键。在这些情况下,您可能需要结合其他事件(如keydown或keyup)来实现完整的键盘操作。

<script type="text/javascript">
	// 监听键盘的keypress事件
	document.addEventListener("keypress", function(event) {
		// 获取按下的键对应的字符
		var char = String.fromCharCode(event.which);

		// 显示用户的输入内容
		var userInput = document.getElementById("user-input");
		userInput.textContent += char;
	});
</script>

最后,当执行一次点击键盘按钮的行为时,以上三个事件的触发顺序为:

keydown -> keypress -> keyup

四、input:在文本输入框或可编辑元素的内容发生改变时触发(包括键盘输入、粘贴、剪切等)。

input事件在JavaScript中用于监听输入框(input)或文本区域(textarea)内容的实时变化。它常用于实现以下场景:

1.实时搜索提示:可以通过监听input事件来实现实时搜索提示功能。当用户在搜索框中输入内容时,每次输入都会触发input事件,并可以通过获取输入框的值进行搜索操作,并实时显示搜索结果。

2.表单验证:可以利用input事件来监听用户在表单输入框中输入内容的变化,并实时进行表单验证。例如,可以监听input事件检查密码强度,当用户输入密码时,实时显示密码强度的提示。

以下例子实现了当用户在输入框中输入内容时,实时统计输入字符的数量,并显示在页面上。

<body>
	<input type="text" id="input-field">
	<div id="char-count"></div>
</body>
<script>
	var inputField = document.getElementById("input-field");
	var charCount = document.getElementById("char-count");

	inputField.addEventListener("input", function(event) {
		var inputValue = event.target.value;
		var count = inputValue.length;
		charCount.textContent = "字符数量:" + count;
	});
</script>

五、compositionstart:在开始进行中文输入时触发。

compositionstart事件在用户开始输入非直接字符(如中文输入法输入)时触发。它通常用于捕获输入法开始输入字符的时机,以便进行相关处理。

需要注意的是,中文输入监听事件的监听目前似乎仅适配微软自带的微软拼音输入法,像搜狗一类的第三方输入法并不能触发该事件.

下面是一个例子,当用户使用中文输入法输入时,监听compositionstart事件并在控制台打印提示信息:

<body>
	<input type="text" id="input-field">
</body>
<script>
	var inputField = document.getElementById("input-field");

	inputField.addEventListener("compositionstart", function(event) {
		console.log("输入法开始输入字符");
	});
</script>

六、compositionupdate:在进行中文输入时,每输入一个字符时触发。

compositionupdate事件在用户正在输入非直接字符(如中文输入法输入)时触发。它通常用于捕获正在输入的字符以及相关信息的更新。

下面是一个例子,当用户使用中文输入法输入时,监听compositionupdate事件并在控制台打印输入的字符:

<body>
	<input type="text" id="input-field">
</body>

<script>
	var inputField = document.getElementById("input-field");

	inputField.addEventListener("compositionupdate", function(event) {
		var inputText = event.data;
		console.log("正在输入字符: " + inputText);
	});
</script>

实际效果:

七、compositionend:在结束中文输入时触发。

compositionend事件在用户完成非直接字符(如中文输入法输入)的输入时触发。它通常用于捕获输入完成后的字符以及相关信息。

下面是一个例子,当用户使用中文输入法输入完成后,监听compositionend事件并在控制台打印输入的字符:

<body>
	<input type="text" id="input-field">
</body>

<script>
	var inputField = document.getElementById("input-field");

	inputField.addEventListener("compositionend", function(event) {
		var inputText = event.data;
		console.log("输入完成的字符: " + inputText);
	});
</script>

 实际效果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytroch实战12:基于pytorch的网络结构可视化

基于pytorch的网络结构可视化 前言 ​ 之前实现了一些常见的网络架构&#xff0c;但是有些网络架构并没有细说&#xff0c;并且网络传输过程中shape的变化也很少谈及过。 ​ 除此之外&#xff0c;前面的实现很少涉及到可视化的内容&#xff0c;比如损失值的可视化、网络结构的…

MySQL的下载、安装、配置(图文详解)

MySQL的下载、安装、配置&#xff08;图文详解&#xff09; 一、MySQL的4大版本二、软件的下载三、MySQL8.0 版本的安装四、配置MySQL8.0五、配置MySQL8.0 环境变量六、MySQL5.7 版本的安装、配置七、安装失败问题 一、MySQL的4大版本 MySQL Community Server 社区版本&#xf…

专高六第一次项目答辩学到的知识点【未完成】

目录标题 1、animation和traslation定义动画的区别&#xff1f;2、微信小程序的支付流程&#xff1f;3、canvas和svg有什么区别&#xff1f;4、app自定义导航栏&#xff0c;如果说打包成小程序导航栏如何适配&#xff1f;4、express权限&#xff0c;接口权限&#xff1f;5、一键…

如何在Linux系统安装Nginx

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

设计思维及在Thoughtworks的应用

图&#xff1a;史江鸿 第一次听到"设计思维"是在2016年&#xff0c;那时我刚加入Thoughtworks。我总能在各种场合听到这个词&#xff0c;似乎它在Thoughtworks具有不可撼动的地位。然而&#xff0c;作为QA角色&#xff0c;我并没有机会深入了解它。 我曾感到疑惑&…

2-python的变量类型

内容提要 主要介绍了python中的变量类型&#xff0c;之前不经常用的点有&#xff1a; 列表的下标可以是负数&#xff0c;无论正负&#xff0c;都是从左侧开始&#xff0c;从左到右依次递增。 还有截取操作[头:尾:步长)&#xff0c;表示连接&#xff0c;*表示重复。 列表与元组…

springboot+vue地方废物回收机构管理(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的地方废物回收机构管理。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1…

leetcode--删除链表的倒数第N个节点(java)

删除链表的倒数第N个节点 Leetcode 19 题解题思路代码演示链表专题 Leetcode 19 题 19 删除链表的倒数第N个节点 -可以测试 题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点 示例1&#xff1a; 输入&#xff1a;he…

javascript基础五:深拷贝浅拷贝的区别?如何实现一个深拷贝?

一、数据类型存储 JavaScript中存在两大数据类型&#xff1a; 基本类型引用类型 基本类型数据保存在在栈内存中 引用类型数据保存在堆内存中&#xff0c;引用数据类型的变量是一个指向堆内存中实际对象的引用&#xff0c;存在栈中 二、浅拷贝 浅拷贝&#xff0c;指的是创建新…

springcloud分布式架构网上商城(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的分布式架构网上商城。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;…

LLM时代NLP研究何去何从?一个博士生的角度出发

深度学习自然语言处理 原创作者&#xff1a;Winni 前言 最近&#xff0c;大语言模型&#xff08;LLMs&#xff09;在许多任务上表现出接近人类水平的性能&#xff0c;这引发了行业兴趣和资金投入的激增&#xff0c;有关LLMs的论文最近也层出不穷。 看起来&#xff0c;NLP领域似…

博客系统(ssm版本)

在前面的文章中给大家介绍过博客系统的servlet版本&#xff0c;但是servlet的技术非常的老旧&#xff0c;我们在企业中用的都是springboot相关的框架&#xff0c;本章内容就是讲述如何一步一步的利用ssm的技术来实现博客系统。 目录 前期配置 创建数据库 配置文件 公共文件…

30 VueComponent 事件的绑定

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 事件的处理流程 问题的调试 整个…

c# cad二次开发 通过选择txt文件将自动转换成多段线

c# cad二次开发 通过选择txt文件将自动转换成多段线&#xff0c;txt样式如下 using System; using System.Collections.Generic; using System.Text; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; usi…

chatgpt赋能python:Python改变图片大小对SEO的影响

Python改变图片大小对SEO的影响 简介 Python作为一门高效的编程语言&#xff0c;广泛应用于各个行业&#xff0c;并在图像处理领域中也有很多应用。其中一个常见的应用就是改变图片的大小。在SEO&#xff08;搜索引擎优化&#xff09;中&#xff0c;图片大小的优化对网站的排…

chatgpt赋能python:Python批量输出:提高工作效率的必备技能

Python批量输出&#xff1a;提高工作效率的必备技能 在日常工作中&#xff0c;我们往往需要批量处理某些数据。Python作为一种流行的编程语言&#xff0c;可以帮助我们快速地完成这项任务。本文将介绍Python批量输出的基本知识和实用技巧&#xff0c;帮助读者提高工作效率。 …

chatgpt赋能python:Python改变当前目录的SEO指南

Python改变当前目录的SEO指南 介绍 对于SEO来说&#xff0c;网站的目录结构和文件命名是非常重要的。良好的目录结构可以帮助搜索引擎更好地理解您的网站内容&#xff0c;而有意义的文件命名可以提高页面的可读性并有助于排名。 但在开发过程中&#xff0c;我们经常需要在不…

铁粉数量上一百了

铁粉数量上一百了 常写博客&#xff0c;常进步。

【Python】类与对象

知识目录 一、写在前面✨二、类与对象简介三、Car类的实现四、Date类的实现五、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文章是 Python中面向对象编程的类与对象。 &#xff0…

一道北大强基题背后的故事(一)——从走弯路到看答案

早点关注我&#xff0c;精彩不错过&#xff01; 在前面的系列文章《我的数学学习回忆录——一个数学爱好者的反思&#xff08;二&#xff09;》中&#xff0c;我从宏观层面回忆了我的数学学习历程和反思。其实&#xff0c;我和数学之间还有很多很多意识流一样的交流和故事&…