【JavaScript】事件监听:键盘事件

2024-05-09 1952阅读

 目录

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

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

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

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

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

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

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


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

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

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

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

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

Keydown事件实例:

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

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

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

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

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

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

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

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

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

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

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

	// 监听键盘的keypress事件
	document.addEventListener("keypress", function(event) {
		// 获取按下的键对应的字符
		var char = String.fromCharCode(event.which);
		// 显示用户的输入内容
		var userInput = document.getElementById("user-input");
		userInput.textContent += char;
	});

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

keydown -> keypress -> keyup

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

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

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

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

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

	
	


	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;
	});

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

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

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

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

	


	var inputField = document.getElementById("input-field");
	inputField.addEventListener("compositionstart", function(event) {
		console.log("输入法开始输入字符");
	});

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

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

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

	


	var inputField = document.getElementById("input-field");
	inputField.addEventListener("compositionupdate", function(event) {
		var inputText = event.data;
		console.log("正在输入字符: " + inputText);
	});

实际效果:

【JavaScript】事件监听:键盘事件

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

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

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

	


	var inputField = document.getElementById("input-field");
	inputField.addEventListener("compositionend", function(event) {
		var inputText = event.data;
		console.log("输入完成的字符: " + inputText);
	});

 实际效果:

【JavaScript】事件监听:键盘事件

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]