@@ -122,7 +122,7 @@ document.addEventListener('keydown', function(event) {
122
122
123
123
## 默认行为
124
124
125
- 默认行为各不相同,因为键盘可能会启动许多可能的东西 。
125
+ 默认行为各不相同,因为键盘可能会触发很多可能的东西 。
126
126
127
127
例如:
128
128
@@ -139,12 +139,16 @@ document.addEventListener('keydown', function(event) {
139
139
``` html autorun height=60 run
140
140
<script >
141
141
function checkPhoneKey (key ) {
142
- return (key >= ' 0' && key <= ' 9' ) || key == ' +' || key == ' (' || key == ' )' || key == ' -' ;
142
+ return (key >= ' 0' && key <= ' 9' ) || [ ' +' , ' (' , ' )' , ' -' ]. includes (key) ;
143
143
}
144
144
</script >
145
- <input *!*onkeydown =" return checkPhoneKey(event.key)" * /!* placeholder =" Phone, please " type =" tel" >
145
+ <input *!*onkeydown =" return checkPhoneKey(event.key)" * /!* placeholder =" 请输入手机号 " type =" tel" >
146
146
```
147
147
148
+ 这里 ` onkeydown ` 的处理程序使用 ` checkPhoneKey ` 来检查被按下的按键。如果它是有效的(` 0..9 ` 或 ` +-() ` 之一),那么将返回 ` true ` ,否则返回 ` false ` 。
149
+
150
+ 我们都知道,像上面那样,从事件处理程序返回 ` false ` 会阻止事件的默认行为,所以如果按下的按键未通过案件检查,那么 ` <input> ` 中什么都不会出现(从事件处理程序返回 ` true ` 不会对任何行为产生影响,只有返回 ` false ` 会产生对应的影响)。
151
+
148
152
请注意,像 ` key:Backspace ` ,` key:Left ` ,` key:Right ` ,` key:Ctrl+V ` 这样的特殊按键在输入中无效。这是严格过滤器 ` checkPhoneKey ` 的副作用。
149
153
150
154
让我们将过滤条件放松一下:
@@ -153,8 +157,8 @@ function checkPhoneKey(key) {
153
157
``` html autorun height=60 run
154
158
<script >
155
159
function checkPhoneKey (key ) {
156
- return (key >= ' 0' && key <= ' 9' ) || key == ' + ' || key == ' ( ' || key == ' ) ' || key == ' - ' ||
157
- key == ' ArrowLeft' || key == ' ArrowRight' || key == ' Delete' || key == ' Backspace' ;
160
+ return (key >= ' 0' && key <= ' 9' ) ||
161
+ [ ' + ' , ' ( ' , ' ) ' , ' - ' , ' ArrowLeft' , ' ArrowRight' , ' Delete' , ' Backspace' ]. includes (key) ;
158
162
}
159
163
</script >
160
164
<input onkeydown =" return checkPhoneKey(event.key)" placeholder =" Phone, please" type =" tel" >
0 commit comments