2010年11月25日 星期四

透過 jQuery 抓取鍵盤壓下的按鍵

透過 jQuery 抓取 user 所敲的鍵盤按鍵,可以使用 .keydown( ) 方法。詳細介紹可以參考官網 API 的介紹。自己在實作過程中,發現了 .keydown( ) 所回傳的結果,並不一定會與原先我所認知的結果符合。舉例來所,壓下鍵盤上的「G」這個按鍵,理論上他應該回傳「71」的值,但我卻得到「229」。耐著性子把26個英文字母、數字、符號敲完,也都是「229」,還真是怪哩!

於是查了一下,出現229,代表的意思是:ecircumflex

感覺有查等於沒查,還真的看不懂 ecircumflex 代表啥!

於是自己寫了一段測試的 Code 如下:

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.4.js"></script> 


<script>
$(function(){
 $("#tbxCatch").keydown(function(evt){alert(evt.keyCode);});
});
</script>

</head>
<body>
<input type="text" id="tbxDefault" >
<br>
<input type="text" id="tbxCatch" >
</body>
</html>

測試過程中,曾經有一陣子我按 「G」按鍵,竟然可以得到 「71」的值,很天真的以為是不是自己眼花了!不過,反覆測試了好幾天,終於找到原因了。兇手是:「輸入法」!!在上面的測試範例中,如果你有將輸入法切換到中文模式,則不管你敲鍵盤上的哪個英文字母,都會是「229」,但如果將輸入法切換成英文模式,就可以得到預期的結果。

日後,如果有需要攔截使用者鍵盤所敲的按鍵時,別忘了 「229」喔!!

參考:
http://api.jquery.com/keydown/

補充:

鍵盤編碼方式


keycode   0 =
keycode   1 =
keycode   2 =
keycode   3 =
keycode   4 =
keycode   5 =
keycode   6 =
keycode   7 =
keycode   8 = BackSpace BackSpace
keycode   9 = Tab Tab
keycode  10 =
keycode  11 =
keycode  12 = Clear
keycode  13 = Enter
keycode  14 =
keycode  15 =
keycode  16 = Shift_L
keycode  17 = Control_L
keycode  18 = Alt_L
keycode  19 = Pause
keycode  20 = Caps_Lock
keycode  21 =
keycode  22 =
keycode  23 =
keycode  24 =
keycode  25 =
keycode  26 =
keycode  27 = Escape Escape
keycode  28 =
keycode  29 =
keycode  30 =
keycode  31 =
keycode  32 = space space
keycode  33 = Prior
keycode  34 = Next
keycode  35 = End
keycode  36 = Home
keycode  37 = Left
keycode  38 = Up
keycode  39 = Right
keycode  40 = Down
keycode  41 = Select
keycode  42 = Print
keycode  43 = Execute
keycode  44 =
keycode  45 = Insert
keycode  46 = Delete
keycode  47 = Help
keycode  48 = 0 equal braceright
keycode  49 = 1 exclam onesuperior
keycode  50 = 2 quotedbl twosuperior
keycode  51 = 3 section threesuperior
keycode  52 = 4 dollar
keycode  53 = 5 percent
keycode  54 = 6 ampersand
keycode  55 = 7 slash braceleft
keycode  56 = 8 parenleft bracketleft
keycode  57 = 9 parenright bracketright
keycode  58 =
keycode  59 =
keycode  60 =
keycode  61 =
keycode  62 =
keycode  63 =
keycode  64 =
keycode  65 = a A
keycode  66 = b B
keycode  67 = c C
keycode  68 = d D
keycode  69 = e E EuroSign
keycode  70 = f F
keycode  71 = g G
keycode  72 = h H
keycode  73 = i I
keycode  74 = j J
keycode  75 = k K
keycode  76 = l L
keycode  77 = m M mu
keycode  78 = n N
keycode  79 = o O
keycode  80 = p P
keycode  81 = q Q at
keycode  82 = r R
keycode  83 = s S
keycode  84 = t T
keycode  85 = u U
keycode  86 = v V
keycode  87 = w W
keycode  88 = x X
keycode  89 = y Y
keycode  90 = z Z
keycode  91 =
keycode  92 =
keycode  93 =
keycode  94 =
keycode  95 =
keycode  96 = KP_0 KP_0
keycode  97 = KP_1 KP_1
keycode  98 = KP_2 KP_2
keycode  99 = KP_3 KP_3
keycode 100 = KP_4 KP_4
keycode 101 = KP_5 KP_5
keycode 102 = KP_6 KP_6
keycode 103 = KP_7 KP_7
keycode 104 = KP_8 KP_8
keycode 105 = KP_9 KP_9
keycode 106 = KP_Multiply KP_Multiply
keycode 107 = KP_Add KP_Add
keycode 108 = KP_Separator KP_Separator
keycode 109 = KP_Subtract KP_Subtract
keycode 110 = KP_Decimal KP_Decimal
keycode 111 = KP_Divide KP_Divide
keycode 112 = F1
keycode 113 = F2
keycode 114 = F3
keycode 115 = F4
keycode 116 = F5
keycode 117 = F6
keycode 118 = F7
keycode 119 = F8
keycode 120 = F9
keycode 121 = F10
keycode 122 = F11
keycode 123 = F12
keycode 124 = F13
keycode 125 = F14
keycode 126 = F15
keycode 127 = F16
keycode 128 = F17
keycode 129 = F18
keycode 130 = F19
keycode 131 = F20
keycode 132 = F21
keycode 133 = F22
keycode 134 = F23
keycode 135 = F24
keycode 136 = Num_Lock
keycode 137 = Scroll_Lock
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 =
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 =
keycode 161 =
keycode 162 =
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 =
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 = acute grave
keycode 188 = comma semicolon
keycode 189 = minus underscore
keycode 190 = period colon
keycode 191 =
keycode 192 = numbersign apostrophe
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 = plusminus hyphen macron
keycode 211 =
keycode 212 = copyright registered
keycode 213 = guillemotleft guillemotright
keycode 214 = masculine ordfeminine
keycode 215 = ae AE
keycode 216 = cent yen
keycode 217 = questiondown exclamdown
keycode 218 = onequarter onehalf threequarters
keycode 219 =
keycode 220 = less greater bar
keycode 221 = plus asterisk asciitilde
keycode 222 =
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 = multiply division
keycode 228 = acircumflex Acircumflex
keycode 229 = ecircumflex Ecircumflex
keycode 230 = icircumflex Icircumflex
keycode 231 = ocircumflex Ocircumflex
keycode 232 = ucircumflex Ucircumflex
keycode 233 = ntilde Ntilde
keycode 234 = yacute Yacute
keycode 235 = oslash Ooblique
keycode 236 = aring Aring
keycode 237 = ccedilla Ccedilla
keycode 238 = thorn THORN
keycode 239 = eth ETH
keycode 240 = diaeresis cedilla currency
keycode 241 = agrave Agrave atilde Atilde
keycode 242 = egrave Egrave
keycode 243 = igrave Igrave
keycode 244 = ograve Ograve otilde Otilde
keycode 245 = ugrave Ugrave
keycode 246 = adiaeresis Adiaeresis
keycode 247 = ediaeresis Ediaeresis
keycode 248 = idiaeresis Idiaeresis
keycode 249 = odiaeresis Odiaeresis
keycode 250 = udiaeresis Udiaeresis
keycode 251 = ssharp question backslash
keycode 252 = asciicircum degree
keycode 253 = 3 sterling
keycode 254 = Mode_switch
keycode 188 = comma semicolon
keycode 189 = minus underscore
keycode 190 = period colon
keycode 191 =
keycode 192 = numbersign apostrophe
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 = plusminus hyphen macron
keycode 211 =
keycode 212 = copyright registered
keycode 213 = guillemotleft guillemotright
keycode 214 = masculine ordfeminine
keycode 215 = ae AE
keycode 216 = cent yen
keycode 217 = questiondown exclamdown
keycode 218 = onequarter onehalf threequarters
keycode 219 =
keycode 220 = less greater bar
keycode 221 = plus asterisk asciitilde
keycode 222 =
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 = multiply division
keycode 228 = acircumflex Acircumflex
keycode 229 = ecircumflex Ecircumflex
keycode 230 = icircumflex Icircumflex
keycode 231 = ocircumflex Ocircumflex
keycode 232 = ucircumflex Ucircumflex
keycode 233 = ntilde Ntilde
keycode 234 = yacute Yacute
keycode 235 = oslash Ooblique
keycode 236 = aring Aring
keycode 237 = ccedilla Ccedilla
keycode 238 = thorn THORN
keycode 239 = eth ETH
keycode 240 = diaeresis cedilla currency
keycode 241 = agrave Agrave atilde Atilde
keycode 242 = egrave Egrave
keycode 243 = igrave Igrave
keycode 244 = ograve Ograve otilde Otilde
keycode 245 = ugrave Ugrave
keycode 246 = adiaeresis Adiaeresis
keycode 247 = ediaeresis Ediaeresis
keycode 248 = idiaeresis Idiaeresis
keycode 249 = odiaeresis Odiaeresis
keycode 250 = udiaeresis Udiaeresis
keycode 251 = ssharp question backslash
keycode 252 = asciicircum degree
keycode 253 = 3 sterling
keycode 254 = Mode_switch

沒有留言:

張貼留言