javascript验证只允许数字和字母

时间:2016-06-07 14:14:20

标签: javascript asp.net

下面是我的javascript代码,只允许字母输入,如果我们输入数字和一些特殊字符,它不接受它们只进入这个工作正常但这个javascript代码应该允许数字,空间也与字母表一起如何做你可以帮帮我吗

<script language="Javascript" type="text/javascript">

         function onlyAlphabets(e, t) {
             try {
                 if (window.event) {
                     var charCode = window.event.keyCode;
                 }
                 else if (e) {
                     var charCode = e.which;
                 }
                 else { return true; }
                 if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 32)
                     return true;
                 else
                     return false;
             }
             catch (err) {
                 alert(err.Description);
             }
         }

    </script> 
<asp:TextBox ID="txtname" runat="server" onkeypress="return onlyAlphabets(event,this);"></asp:TextBox>

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式来测试输入,如下所示:

var regexp = new RegExp(/^[a-zA-Z0-9 ]+$/);
var str="sqdqsd qsd125";
var str2="sqdqsdqsd12;5";
console.log(regexp.test(str));
console.log(regexp.test(str2));

https://jsfiddle.net/Tintin37/7Lj7r9zp/1/

修改

我添加了一个小片段;)

 function onlyAlphabets(e, t) {
   var regexp = new RegExp(/^[a-zA-Z0-9 ]*$/);
   console.log(regexp.test(t.value));
   return regexp.test(t.value);
 }
<input type="text" onkeyup="return onlyAlphabets(event,this);" />

EDIT2

具有所需的行为;)

 function onlyAlphabets(e, t) {
   var regexp = new RegExp(/^[a-zA-Z0-9 ]*$/);
   if (window.event) {
     keynum = e.keyCode;
   } else if (e.which) {
     keynum = e.which;
   }
   var test = regexp.test(String.fromCharCode(keynum));
   return test;

 }
<input type="text" onkeypress="return onlyAlphabets(event,this);" />

答案 1 :(得分:1)

我可能会按照此处描述的内容执行某些操作,同时添加所需的空格包含:Best way to alphanumeric check in Javascript

例如,请查看以下代码段:

function allowAlphaNumericSpace(e) {
  var code = ('charCode' in e) ? e.charCode : e.keyCode;
  if (!(code == 32) && // space
    !(code > 47 && code < 58) && // numeric (0-9)
    !(code > 64 && code < 91) && // upper alpha (A-Z)
    !(code > 96 && code < 123)) { // lower alpha (a-z)
    e.preventDefault();
  }
}
<input type="text" onkeypress="allowAlphaNumericSpace(event)" />

编辑: 根据你的评论,我的快速和肮脏的解决方案如下,虽然我确定一个更好的选择必须存在...记下从“onkeypress”到“onkeyup”的切换,以确保在新的后更新值字符已插入。

function allowAlphaNumericSpace(thisInput) {
  thisInput.value = thisInput.value.split(/[^a-zA-Z0-9 ]/).join('');
}
<input type="text" onkeyup="allowAlphaNumericSpace(this)" />

答案 2 :(得分:0)

您的代码不接受数字的原因是因为数字也有自己的字符代码。例如,1的字符代码是48.要包含数字,您应该在if语句中包含它:

(charCode >= 48 && charcode <= 57)

不确定为什么空格不起作用,但看看上面是否有帮助!