JS / JQuery开关无法正常工作

时间:2016-08-26 11:05:43

标签: javascript jquery

我不知道它为什么会工作:

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

我需要切换,因为我想在切换中添加更多选项。

5 个答案:

答案 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;
&#13;
&#13;