javascript - 只允许数字和字母输入字符串

标签 javascript html regex validation input

我试图避免在我的 page.php 上输入除数字和字母以外的任何标记和输入字符串:

<input type="text" id="input"> 

来自这个答案only allow English characters and numbers for text input <input type="text" id="input" class="clsAlphaNoOnly"> :

$(document).ready(function () {
  $('.clsAlphaNoOnly').keypress(function (e) {  // Accept only alpha numerics, no special characters 
        var regex = new RegExp("^[a-zA-Z0-9 ]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }

        e.preventDefault();
        return false;
    }); 
})

或者这个:

$(function(){
    $("#input").keypress(function(event){
        var ew = event.which;
        if(ew == 32)
            return true;
        if(48 <= ew && ew <= 57)
            return true;
        if(65 <= ew && ew <= 90)
            return true;
        if(97 <= ew && ew <= 122)
            return true;
        return false;
    });
});

在这两种情况下,字符串都是清晰的,但我使用了两种类型的按钮点击输入 $("#btn").click(function()处理输入和$(document).keypress(function(e)点击键盘上的回车键进行相同的输入。由于某种原因,如果我包含此方法以避免字符串中出现额外标记,则按回车键将不允许输入插入的值。

这种方式工作正常:

<input type="text" id="input"  onkeypress="return (event.charCode >= 65 && event.charCode <= 90) || (event.charCode >= 97 && event.charCode <= 122) || (event.charCode >= 48 && event.charCode <= 57)" />

但我想避免使用 html 的额外代码在page.php .我试图弄清楚,是什么导致使用给定方法阻止输入插入值

最佳答案

会告诉你可能会错过事件参数吗?

在没有 jQuery 的情况下,我在 3 种浏览器中的工作方式如下:

function clsAlphaNoOnly (e) {  // Accept only alpha numerics, no special characters 
    var regex = new RegExp("^[a-zA-Z0-9 ]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
}
function clsAlphaNoOnly2 () {  // Accept only alpha numerics, no special characters 
    return clsAlphaNoOnly (this.event); // window.event
}
<input type="text" id="input" onkeypress="clsAlphaNoOnly(event)" onpaste="return false;">
<input type="text" id="input" onkeypress="clsAlphaNoOnly2()" onpaste="return false;">

关于javascript - 只允许数字和字母输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698005/

相关文章:

javascript - 优先考虑 AJAX 调用

javascript - 在 HTML/JavaScript 中部分渲染

ios - Safari 和 Apple 的 CSS

JavaScript 表单提交 - 确认或取消提交对话框

javascript - 在 jQuery 中访问动态附加的 div 元素

php - 在 PHP 中删除 BBCode 标签及其内容

python - 正则表达式计数出现次数

javascript - 在开发工具中检查之前无法选择元素

ruby - 如何使用 Ruby 正则表达式来捕获非英语单词?

javascript - 为什么 Angular Stripe 集成需要 ChangeDetectorRef.detectChanges()?