在TextBox上使用RegEx OnKeyPress无法按下键盘上的Tab键

时间:2015-09-21 01:14:11

标签: javascript asp.net regex

我在JavaScript中使用RegEx来限制用户无法输入任何键,除了RegEx字符允许的内容,我已经将包含RegEx的JavaScript函数分配给TextBox上的OnKeyPress。不幸的是,当我在键盘上按Tab键时,它不允许我移动到下一个控件。

以下是代码:

<asp:TextBox ID="TextBox1" runat="server" Text="Field:" onkeypress="return AlphaNumericTextBox(event)" oncopy="return false" onpaste="return false"></asp:TextBox>

function AlphaNumericTextBox(event) {
            var regex = new RegExp("^[a-zA-Z0-9\b\t]+$");

            var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);

            if (!regex.test(key)) {
                event.preventDefault();

                return false;
            }
        }

有人可以帮助我吗?我确信&#34; / t&#34; 是RegEx for键盘中Tab键的字符代码。我测试了它,只有当我按下键盘上的Tab键时,它才允许我,它只允许我按下:字母数字和退格键。

你的回答非常感谢!

谢谢。

1 个答案:

答案 0 :(得分:1)

使用indexOf内置的javascript函数。在那里没有比那更有效率:D

语法--- arr.indexOf(searchElement[, fromIndex = 0])

Here is the JSFiddle demo

相关链接:

// CODE

<!DOCTYPE html>
<html>
<head>  
<script>
function keyFilter(key){
    var filter = [97,98,99,100]; //a,b,c,d
    if(filter.indexOf(key) >= 0){ 
        console.log("a,b,c,d - filter");
    }
    else{
        console.log("everything else");
    }
}
</script>   
</head>
<body>  
    <textarea onkeypress="keyFilter(event.keyCode);"></textarea>
</body>
</html>