2016-12-30 95 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">

这会为你工作。你以前没有测试过数字和信号。