Javascript Jquery-IF-ELSE逻辑不';行不通

Javascript Jquery-IF-ELSE逻辑不';行不通,javascript,jquery,jsp,Javascript,Jquery,Jsp,我正在尝试编写一个jquery函数,它根据区域设置控制用户输入的texfield(用于货币)。警报确实告诉我德国的语言环境是“de”。但if-else逻辑不起作用。特定键代码的preventDefault()在没有if-else的情况下可以正常工作。有人能告诉我我做错了什么吗 jQuery(function($) { $('.currency').on('keydown', function(e) { var locale = $

我正在尝试编写一个jquery函数,它根据区域设置控制用户输入的texfield(用于货币)。警报确实告诉我德国的语言环境是“de”。但if-else逻辑不起作用。特定键代码的preventDefault()在没有if-else的情况下可以正常工作。有人能告诉我我做错了什么吗

     jQuery(function($) {
             $('.currency').on('keydown', function(e) {
               var locale = $('#currFormat').val(); 
               //alert(locale); 

               if (locale.toLowerCase() === "de" ) {                    
                  console.log(e.keyCode);

                 if (e.keyCode !== 46 && e.keyCode > 31 && e.keyCode !== 96 && e.keyCode !== 97 && e.keyCode !== 98 && e.keyCode !== 99 && e.keyCode !== 100 && e.keyCode !== 101 && e.keyCode !== 102 && e.keyCode !== 103 && e.keyCode !== 104 && e.keyCode !== 105 && e.keyCode !== 188 e.keyCode !== 37 && e.keyCode !==39 && (e.keyCode < 48 || e.keyCode > 57)) {
                    //stop all non-numbers
                    e.preventDefault();

                } else {
                 // Here goes logic for not allowing comma and others (,)
              }
             });
           });   
jQuery(函数($){
$('.currency')。on('keydown',函数(e){
var locale=$('#currFormat').val();
//警报(区域设置);
如果(locale.toLowerCase()=“de”){
console.log(例如keyCode);
如果(e.keyCode!==46&&e.keyCode>31&&e.keyCode!==96&&e.keyCode!==97&&e.keyCode!==98&&e.keyCode!==99&&e.keyCode!==100&&e.keyCode!==101&&e.keyCode!==103&&e.keyCode!==104&&e.keyCode!==105&&e.keyCode!==188&e.keyCode!==37&&e.keyCode{
//停止所有非数字
e、 预防默认值();
}否则{
//下面是不允许逗号和其他(,)的逻辑
}
});
});   
“amount”值来自JSP

    <input type="hidden" id="CurrFormat" name="currFormat" 
     value="${pageContext.request.locale.language}" />

您有一个输入错误。因此从技术上讲,您选择的是页面上不存在的元素

$('#currFormat').val(); 
应该是

$('#CurrFormat').val(); 
这也是复制粘贴错误吗

e.keyCode !== 188 e.keyCode !== 37  --> missing logical && between expressions
另外,容易产生语法错误的原因是代码根本不可读。相反,您可以将其压缩并简化

var keyCode = e.keyCode;
var invalidKeyCodes = [37, 39, 46, 96, 97, 98, 99, 100, 101. 102, 103, 104, 105, 188];

if (invalidKeyCodes.indexOf(keyCode) < 0 && keyCode > 31 && (keyCode < 48 || keyCode > 57)) {
var-keyCode=e.keyCode;
var invalidKeyCodes=[37,39,46,96,97,98,99,100,101.102,103,104,105,188];
if(无效的键码索引of(键码)<0&&keyCode>31&&keyCode<48|keyCode>57)){

第二个控制台日志输出是什么?这就是我在那里的键码,控制台在JS中显示了一个语法错误。它指向我刚才编辑的那个特定if语句。尽管在我添加if-else之前它对我有效。很抱歉,在发布问题时输入了错误。我的c中有正确的idode.
e.keyCode!==188 e.keyCode!==37
?这是复制粘贴问题吗?你是对的!当它工作时,我给我们的句号(.)有一个110或190。我把它改为188表示逗号(,)德国。非常感谢!!!@MonsoonThunder查看编辑的帖子。这样,当它可读时,查找bug就会容易得多。@Sushanth--这很有道理。谢谢!