如何实时监听 input 和 textarea输入框值的变化

在实际前端开发中我们经常会遇到要实时监听用户的输入,根据不同的输入值来采取不同的措施。举一个常见的例子:我们在使用Google搜索框进行搜索时,每多输入一个字,搜索框下方显示的匹配结果会实时变化。这样的效果就是通过实时监听搜索框的输入值变化从而提取不同的匹配结果来实现的。

那么,一般使用最多的输入框就是 input和 textarea了。要想实时监听这两种输入框的值变化,就不得不提到键盘事件 key event了。

键盘相关事件

onkeydown

onkeypress

onkeyup

oninput

onchange

onpropertychange

onkeydown/onkeypress/onkeyup

使用这三个事件监听输入框值变化,不能监听到右键的复制、粘贴、剪切的操作。

onkeydown

按下键盘上的任意键(不包括PrScrn键)时触发;如果一直按着键不放,则会一直触发此事件。

onkeypress

按下键盘上的可显示字符键(可以参考此文的键盘按键分类一节)时触发,如果一直按着键不放,则会一直触发此事件。

onkeyup

释放键盘上的任意键(不包括PrScrn键)时触发

1、是否可以捕获组合键?

onkeydown/onkeyup可以捕获组合键,onkeypress只能捕获单个字符。

在捕获组合键时建议使用 onkeyup事件。

2、是否区分大小写字符?

onkeypress能区分字符的大小写,onkeydown/onkeyup不能区分。

3、是否区分主键盘和小键盘的数字?

onkeypress不区分主键盘和小键盘的数字,onkeydown/onkeyup则可以区分。

4、触发顺序

先 onkeydown,再 onkeypress,最后onkeyup

参考文档

oninput/onpropertychange

上面讲到用 keydown/keypress/keyup无法监听右键粘贴复制操作,于是就有了 oninput事件。

oninput是 HTML5的新事件,可以在输入框( textarea, input:text/password/search等)的value值发生变化时(通过 JS修改输入值除外)立即触发,所以可以监听右键粘贴复制操作。但 IE9.0以下版本不支持,此时需要用到IE特有的 onpropertychange事件。在 Safari5.0以下版本,oninput不支持 textarea元素。

onpropertychange是 IE特有的事件,与 oninput不同的是,只要绑定对象的相关属性(不单 value值)发生变化(包括通过JS脚本来修改)都会触发此事件。

onchange

要触发这个事件有2个必备条件:

1、和onpropertychange一样,只要绑定对象的相关属性发生了变化就会触发此事件。但和onpropertychange不同,通过JS脚本改变属性时无法触发);

2、输入框失去焦点后触发,所以无法做到实时监听;

键盘按键分类

键盘上的每一个按键都对应唯一的 ASCII码值,从这个角度理解其实每一个按键都是字符键。但这些按键可以分为2类: ASCII码控制字符键和 ASCII码可显示字符键。

ASCII码控制字符键

控制字符键是不会产生我们能看到的字符的按键,这类控制字符键常见的有:F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键。

常见控制字符键对应的 ASCII码见下:

ESC键 VK_ESCAPE(27)

回车键: VK_RETURN(13)

TAB键: VK_TAB(9)

Caps Lock键: VK_CAPITAL(20)

Shift键: VK_SHIFT($10)

Ctrl键: VK_CONTROL(17)

Alt键: VK_MENU(18)

空格键: VK_SPACE(32)

退格键: VK_BACK(8)

左徽标键: VK_LWIN(91)

右徽标键: VK_LWIN(92)

鼠标右键快捷键:VK_APPS(93)

Insert键: VK_INSERT(45)

Home键: VK_HOME(36)

Page Up: VK_PRIOR(33)

PageDown: VK_NEXT(34)

End键: VK_END(35)

Delete键: VK_DELETE(46)

方向键(←): VK_LEFT(37)

方向键(↑): VK_UP(38)

方向键(→): VK_RIGHT(39)

方向键(↓): VK_DOWN(40)

F1键: VK_F1(112)

F2键: VK_F2(113)

F3键: VK_F3(114)

F4键: VK_F4(115)

F5键: VK_F5(116)

F6键: VK_F6(117)

F7键: VK_F7(118)

F8键: VK_F8(119)

F9键: VK_F9(120)

F10键: VK_F10(121)

F11键: VK_F11(122)

F12键: VK_F12(123)

ASCII码可显示字符键

可显示字符键是会产生我们能看到的字符的按键,这类按键常见得有:数字(包括 shift+数字)、字母(大小写)、小键盘。

常用可显示字符键ASCII码如下:

65 A键

66 B键

67 C键

68 D键

69 E键

70 F键

71 G键

72 H键

73 I键

74 J键

75 K键

76 L键

77 M键

78 N键

79 O键

80 P键

81 Q键

82 R键

83 S键

84 T键

85 U键

86 V键

87 W键

88 X键

89 Y键

90 Z键

键盘按键 ASCII码对应表

area***f2是什么游戏

areaf2是游戏《代号:F2》的英文名称,代号:F2是一款5v5立体攻防枪战手游,通过模拟真实室内环境,玩家将化身拥有专属职业技能的干员,轮流进攻和防守,并争夺军事重地。

游戏是所有哺乳类动物,特别是灵长类动物学习生存的第一步。它是一种基于物质需求满足之上的,在一些特定时间、空间范围内遵循某种特定规则的,追求精神世界需求满足的社会行为方式。