我不知道它为什么会工作:
$(document).keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13')
{
key_click("ent");
}
});
但它不起作用:
$(document).keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
switch(keycode)
{
case '13': key_click("ent"); break;
}
});
我需要切换,因为我想在切换中添加更多选项。
答案 0 :(得分:2)
由于键码是数字类型而不是字符串类型,
在你的if条件中:
if(keycode == '13') // not checked with strict equality operator so it works
但在你的开关中:
case '13': // switch case checks with strict equality so it won't work.
您需要使用:
case 13:
答案 1 :(得分:1)
这样做
switch(keycode)
{
case 13: key_click("ent"); break;
}
答案 2 :(得分:1)
为了证明,这有效:
if(keycode == '13')
{
key_click("ent");
}
但是这个没有:
if(keycode === '13')
{
key_click("ent");
}
注意使用的运算符的差异。与==
进行比较时,JavaScript对类型并不严格,因此13 == '13'
为true
。但是,===
运算符对类型非常严格,因此13 === '13'
为false
。
switch
运算符也很严格。只需使用相同的类型进行比较:
switch(keycode)
{
case 13: key_click("ent"); break;
}
答案 3 :(得分:1)
更改:
case '13':
致:
case 13:
答案 4 :(得分:0)
如果您的输入是字符串,那么您可以使用以下内容:
var keycode = "13";
switch(keycode)
{
case '13' : console.log("case 13"); break;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
&#13;