用jquery / javascript检测数字或字母?

时间:2010-02-13 09:26:41

标签: javascript jquery

我想只在用户输入字母或数字时才使用if语句来运行代码。

我可以用

 if(event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
       // run code
 }

有更简单的方法吗?也许某些密钥代码在所有网络浏览器中都不起作用?

12 个答案:

答案 0 :(得分:124)

如果要检查一系列字母,可以使用大于和小于:

if (event.keyCode >= 48 && event.keyCode <= 57)
    alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
    alert("input was a-z");

要进行更动态的检查,请使用正则表达式:

var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
    alert("input was a letter, number, hyphen, underscore or space");

请参阅MDC documentation了解keyCode属性,该属性解释了该属性与which属性之间的区别以及它们适用于哪些事件。

答案 1 :(得分:22)

首先,如果您这样做,请确保它在keypress事件中,这是您可以可靠地获取有关用户键入的字符的信息的唯一事件。然后我会使用Andy E建议的方法:

document.onkeypress = function(evt) {
   evt = evt || window.event;
   var charCode = evt.which || evt.keyCode;
   var charStr = String.fromCharCode(charCode);
   if (/[a-z0-9]/i.test(charStr)) {
       alert("Letter or number typed");
   }
};

如果您要检查退格键,我会使用keydown事件并检查keyCode为8,因为多个浏览器(包括Chrome)都不会触发keypress退格键的事件。

答案 2 :(得分:15)

使用event.key和现代JS!

没有数字代码了。你可以直接检查密钥。

const key = event.key.toLowerCase();

if (key.length !== 1) {
    return;
}
const isLetter = (key >= "a" && key <= "z");
const isNumber = (key >= "0" && key <= "9");
if (isLetter || isNumber) {
    // Do something
}

您也可以使用简单的正则表达式。 ^$确保1个字符,i忽略大小写

/^[a-z0-9]$/i.test(event.key)

或单独:

const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)

答案 3 :(得分:7)

if(event.keyCode >= 48 && event.keyCode <= 90) {
    //the key pressed was alphanumeric
}

答案 4 :(得分:0)

号码验证,对我来说很好用

$(document).ready(function () {

        $(".TxtPhone").keypress(function (e) {

            var key = e.charCode || e.keyCode || 0;

            // only numbers
            if (key < 48 || key > 58) {

                return false;
            }

        });

});

答案 5 :(得分:0)

您还可以将 charCode onKeyPress 事件一起使用:

if (event.charCode > 57 || event.charCode < 48) {
    itsNotANumber();
}
else {
    itsANumber();
}

答案 6 :(得分:0)

使用$.isNumeric(value);返回类型是boolean

答案 7 :(得分:0)

使用正则表达式通过动态过程使用javascript接受数字或字母。

为特定控制添加onkeypress事件

onkeypress =&#34; javascript:return isNumber(event)&#34;

&#13;
&#13;
    function numOnly(evt) {
               evt = evt || window.event;
                var charCode = evt.which || evt.keyCode;
                var charStr = String.fromCharCode(charCode);
                if (/[0-9]/i.test(charStr)) {
                    return true;
                }
                else
                    return false;
            }

    function Alphanum(evt) {
                evt = evt || window.event;
                var charCode = evt.which || evt.keyCode;
                var charStr = String.fromCharCode(charCode);
                if (/[a-z0-9]/i.test(charStr)) {                
                    return true;
                }
                else
                    return false;
            }
&#13;
&#13;
&#13;

答案 8 :(得分:0)

$('#phone').on('keydown', function(e) {
     let key = e.charCode || e.keyCode || 0;

     //32 = space - border of visible and non visible characters - allows us to backspace and use arrows etc
     //127 - delete
     if (key > 32 && (key < 48 || key > 58) && key !== 127) {
         e.preventDefault();
         return false;
     }
 });

修改@ user4584103的答案,允许我们删除字符,并在输入框中导航并过滤掉每个不是num字符

答案 9 :(得分:0)

正如@Gibolt所说, 你应该使用event.key

因为charCode,keyCode和哪些被弃用。

答案 10 :(得分:0)

对于数值:

function ValidNumeric()
    {
        var charCode = (event.which) ? event.which:event.KeyCode;
        if (charCode>=48 && charCode<=57) 
        {
        return true;
        }
        else
        return false;
    }

此处,数值范围是48和57。

对于字母:

function ValidAplpha()
{
    var charCode = (event.which) ? event.which:event.KeyCode;

    if(charCode >= 65 && charCode <= 90 || charCode>=97 && charCode<=122)
    {
    return true;
    }
    else
    return false;
}

此处,大写字母大写字母(A-Z)的范围是65到90,小字母大写字母(a-z)的范围是97到122

答案 11 :(得分:0)

要在使用 <input><textarea> 时检测字母和数字,您可以使用 input 事件。

<input><textarea> 值更改时会触发此事件,因此无需担心 AltShift、箭头等键. 甚至更多 - 如果您使用鼠标剪切部分文本,事件也会触发。

var element = document.getElementById('search');

element.addEventListener('input',function(e){

  console.log(element.value);

});
<input id="search" type="text" placeholder="Search" autocomplete="off">