2017-07-03 36 views
1

我在輸入中遇到了避免特殊字符(Alt +數字來自Bloq。num - >☺☻♥♦♣♠•◘○)的問題。當Alt鍵加上來自Bloq號碼的號碼被按下時,阻止按鍵

我輸入聲明如下:

<html:text styleId="inputMaxVol" styleClass="numeric"/> 

這是我的onReady

$(".numeric").keydown(function(event) { 
    return maskNumber(); 
}); 

而這裏就是我想要做的工作(沒有成功)

function maskNumber() { 
    if (event) { 
    var charCode = (event.which)? event.which : event.keyCode; 
    console.log(charCode); 
    // If not a number 
    if ((charCode < 47 || charCode > 58) && (charCode < 95 || charCode > 105)) { 
     console.log("not a number"); 
     return false; 
    } else if (event.altKey) { 
     //No special characters admitted 
     console.log("Alt pressed"); 
     return false; 
    } 
    } else { 
    return false; 
    } 
} 

如果我按下Alt + 1(數字鍵盤上的鍵「1」),出現白色笑臉,並在我的日誌中出現一些東西我認爲

18 
not a number 
97 
Alt pressed 

我也試過了event.preventDefault()沒有成功。任何關於我的問題在哪裏的想法?

謝謝,我真的很感謝你能提供任何幫助。

UPDATE:作爲註釋解釋瞭解決方案來改變對按鍵的keydown事件和變化中charCode比較 - 數字(現在是僅當(charCode < 48 || charCode > 57)由於返回的數量也發生了變化

所以。解決方法如下

$(".numeric").keypress(function(event) { 
    return maskNumber(); 
}); 

function maskNumber() { 
    if (event) { 
     var charCode = (event.which)? event.which : event.keyCode;   
     // If not a number 
     if (charCode < 48 || charCode > 57) {      
      return false; 
     }    
    } else { 
    return false; 
    } 
} 

就這麼簡單!

+0

試試這個庫:https://開頭github.com/tzuryby/jquery.hotkeys – brijrajsinh

回答

0

返回false不會禁用該事件。 您需要做一個event.preventDefault(),它阻止事件發生,而不是返回false。

event.preventDefault(); 

return false正在爲onbeforesubmit事件中,形式的。

+0

正如你可以在我的第一篇文章中看到的,我已經嘗試過,但字符也顯示:( – Ivan

+0

你是否添加了'event.preventDefault()' e'onkeydown'?如果(!maskNumber()){ event .preventDefault(); } });(如果不是這樣, –

+0

是的,即使只有\t' $(「。numeric」)。keydown(function(event){event.preventDefault();});'任何字符都被輸入,除了特殊的字符和Alt鍵[☺☻♥♦♣ ♠•◘○] – Ivan

3

試試下面的代碼將在每個瀏覽器工作,或者如果你想使用庫,然後訪問此鏈接:https://github.com/tzuryby/jquery.hotkeys

$("#txtmy").keypress(function(event) { 
 
    if (event.which.toString().length > 3) { 
 
    event.preventDefault(); 
 
    return; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="txtmy"/>

相關問題