JavaScript或运算符

JavaScript或运算符,javascript,asp.net,Javascript,Asp.net,我很难确定我的代码出了什么问题 function NavCode() { if ((event.keyCode > 31 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65)|| (event.keyCode > 90 && event.keyCode < 97)|| (event.keyCode > 122 &am

我很难确定我的代码出了什么问题

function NavCode() {
    if ((event.keyCode > 31 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65)|| (event.keyCode > 90 && event.keyCode < 97)|| (event.keyCode > 122 && event.keyCode < 164)||(event.keyCode > 166) )
        event.returnValue = false;
        return false;
    }
函数NavCode(){
如果((event.keyCode>31&&event.keyCode<48)|(event.keyCode>57&&event.keyCode<65)|(event.keyCode>90&&event.keyCode<97)|(event.keyCode>122&&event.keyCode<164)|(event.keyCode>166))
event.returnValue=false;
返回false;
}
我的目标是只允许0-9个数字A-Za-z字母ññ和特殊字符 我成功地实现了0-9-A-Zazññ

使用此代码

function NavCode() {
        if ((event.keyCode > 31 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65)|| (event.keyCode > 90 && event.keyCode < 97)|| (event.keyCode > 122 && event.keyCode < 164))
            event.returnValue = false;
            return false;
        }
函数NavCode(){
if((event.keyCode>31&&event.keyCode<48)|(event.keyCode>57&&event.keyCode<65)|(event.keyCode>90&&event.keyCode<97)|(event.keyCode>122&&event.keyCode<164))
event.returnValue=false;
返回false;
}
问题是它还允许165个以上的ascii字符,例如

但是当我添加
| |(event.keyCode>166)
特殊字符没有任何作用时,您能帮我只允许
0-9-A-Zazñ??我真的很难调试java脚本,因为我是新手


谢谢。

您在
if
上缺少大括号(
{
}
),因此您的
返回false行总是在执行,因为没有大括号的
if
只会有条件地执行下一行

试试这个:

function NavCode() {
    if ((event.keyCode > 31 && event.keyCode < 48) || 
       (event.keyCode > 57 && event.keyCode < 65)|| 
       (event.keyCode > 90 && event.keyCode < 97)|| 
       (event.keyCode > 122 && event.keyCode < 164)) {
        event.returnValue = false;
        return false;
    }
}
函数NavCode(){
如果((event.keyCode>31&&event.keyCode<48)|
(event.keyCode>57&&event.keyCode<65)|
(event.keyCode>90&&event.keyCode<97)|
(event.keyCode>122&&event.keyCode<164)){
event.returnValue=false;
返回false;
}
}

现在
返回falseif
条件为
true
时,才会执行
if
上缺少大括号(
{
}
),因此
返回false行总是在执行,因为没有大括号的
if
只会有条件地执行下一行

试试这个:

function NavCode() {
    if ((event.keyCode > 31 && event.keyCode < 48) || 
       (event.keyCode > 57 && event.keyCode < 65)|| 
       (event.keyCode > 90 && event.keyCode < 97)|| 
       (event.keyCode > 122 && event.keyCode < 164)) {
        event.returnValue = false;
        return false;
    }
}
函数NavCode(){
如果((event.keyCode>31&&event.keyCode<48)|
(event.keyCode>57&&event.keyCode<65)|
(event.keyCode>90&&event.keyCode<97)|
(event.keyCode>122&&event.keyCode<164)){
event.returnValue=false;
返回false;
}
}

现在
返回falseif
条件为
true
时,才会执行
if
上缺少大括号(
{
}
),因此
返回false行总是在执行,因为没有大括号的
if
只会有条件地执行下一行

试试这个:

function NavCode() {
    if ((event.keyCode > 31 && event.keyCode < 48) || 
       (event.keyCode > 57 && event.keyCode < 65)|| 
       (event.keyCode > 90 && event.keyCode < 97)|| 
       (event.keyCode > 122 && event.keyCode < 164)) {
        event.returnValue = false;
        return false;
    }
}
函数NavCode(){
如果((event.keyCode>31&&event.keyCode<48)|
(event.keyCode>57&&event.keyCode<65)|
(event.keyCode>90&&event.keyCode<97)|
(event.keyCode>122&&event.keyCode<164)){
event.returnValue=false;
返回false;
}
}

现在
返回falseif
条件为
true
时,才会执行
if
上缺少大括号(
{
}
),因此
返回false行总是在执行,因为没有大括号的
if
只会有条件地执行下一行

试试这个:

function NavCode() {
    if ((event.keyCode > 31 && event.keyCode < 48) || 
       (event.keyCode > 57 && event.keyCode < 65)|| 
       (event.keyCode > 90 && event.keyCode < 97)|| 
       (event.keyCode > 122 && event.keyCode < 164)) {
        event.returnValue = false;
        return false;
    }
}
函数NavCode(){
如果((event.keyCode>31&&event.keyCode<48)|
(event.keyCode>57&&event.keyCode<65)|
(event.keyCode>90&&event.keyCode<97)|
(event.keyCode>122&&event.keyCode<164)){
event.returnValue=false;
返回false;
}
}

现在
返回falseif
条件为
true
时,才会执行code>,因为缺少if条件,这是问题的主要原因,如果没有应用大括号,则在条件的右括号后面的语句,仅出现在if-then-else语句的“then”部分,无论是否满足if中的条件,每次都会执行所有其他语句。

您缺少,if条件的大括号,这是问题的主要原因,如果没有应用大括号,则条件的右括号后面的语句,仅出现在if-then-else语句的“then”部分,无论是否满足if中的条件,每次都会执行所有其他语句。

您缺少,if条件的大括号,这是问题的主要原因,如果没有应用大括号,则条件的右括号后面的语句,仅出现在if-then-else语句的“then”部分,无论是否满足if中的条件,每次都会执行所有其他语句。

您缺少,if条件的大括号,这是问题的主要原因,如果没有应用大括号,则条件的右括号后面的语句,仅出现在if-then-else语句的“then”部分,无论是否满足if中的条件,每次都会执行所有其他语句。

假设event.keyCode是unicode值,您可以执行以下操作:

if (String.fromCharCode(event.keyCode).match(/[^0-9A-Za-zñÑ]/)) {
  event.returnValue = false;
  return false;
}
它首先将event.keyCode转换为字符串(如果您有权访问该字符,请改用该字符串),然后使用regexp进行否定匹配(a
^
作为范围中的第一个字符使其成为否定匹配)

使用regexp而不是检查event.keyCode的值要慢一点,但我认为它更可读。除非你的代码运行在一个紧密的循环中,并且处理megab