2016-12-30 193 views
0

我想有一個js代碼允許鍵入只有拉丁章程編號和特殊字符(Alt鍵盤序列,EX:[email protected]#$%^&*()_|}{~!"?>:<?/][\=-'`,...),我試過這樣,但它不爲拉丁數字和隱形字符鍵盤工作,我該怎麼辦?jQuery只允許拉丁字符

DEMO:https://jsfiddle.net/oosjtmgg/

 $(".latin_letters").on("keypress", function(event) { 
 
      var englishAlphabetAndWhiteSpace = /[A-Za-z ]/g; 
 
      var key = String.fromCharCode(event.which); 
 
      if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetAndWhiteSpace.test(key)) { 
 
       return true; 
 
      } 
 
      return false; 
 
     }); 
 
     $('.latin_letters').on("paste", function(e) { 
 
      e.preventDefault(); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="email" class="latin_letters">

+0

什麼是「隱形字符鍵盤」? – guest271314

+0

@ guest271314 EX this:!@#$%^&*()_ |} {〜!,... –

+0

是「!@#$%^&*()_ |} {〜!,」 ? 「...」代表有效或無效的輸入字符是什麼? – guest271314

回答

0

請試試這個:

只加: - VAR englishAlphabetAndWhiteSpace =「/^[[email protected]/# & + \ W \ s] * $ /「;

$(".latin_letters").on("keypress", function(event) { 
 
     var englishAlphabetAndWhiteSpace = /^[[email protected]/#&+\w\s]*$/; 
 
      var key = String.fromCharCode(event.which); 
 
      if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetAndWhiteSpace.test(key)) { 
 
       return true; 
 
      } 
 
      return false; 
 
     }); 
 
     $('.latin_letters').on("paste", function(e) { 
 
      e.preventDefault(); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="email" class="latin_letters" type="text">

+0

請嘗試此操作... –

0

$(".latin_letters").on("keydown", function(event) { 
 
      var allowed = /[[email protected]#\$%\^&\*\(\)_|}{~">:<\?/\]\[\\=\- ]/g; 
 
      var key = String.fromCharCode(event.which); 
 
      if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || allowed.test(key)) { 
 
       return true; 
 
      } 
 
      return false; 
 
     }); 
 
$('.latin_letters').on("paste", function(e) { 
 
    e.preventDefault(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="email" class="latin_letters">

這會爲你工作。你以前沒有測試過數字和信號。