加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

如何在纯JavaScript中输入表单输入时禁止使用特定字符?

发布时间:2020-12-14 22:36:40 所属栏目:资源 来源:网络整理
导读:我正在尝试创建一个用户名文本框,阻止用户的输入,如果它是这些中的任何一个(!,@,#,$,%,^,,*,(,),=,;,:,`,?,|,,?,/,.,>, 我的第一个JS脚本是: https://jsfiddle.net/ck7f9t6x userID_textfield.onkeydown = function(e) { var prohibited = "!@#$%^*()+=

我正在尝试创建一个用户名文本框,阻止用户的输入,如果它是这些中的任何一个(!,@,#,$,%,^,&,*,(,),=,;,:,`,?,|,’,?,/,.,>,<,“). 这个想法不是在事后进行检查,而是在点击的那一刻.我有两个想法,这两个结果都很糟糕.第一个JS脚本似乎根本不工作,第二个JS脚本冻结了整个选项卡. 我目前的HTML代码是:

我的第一个JS脚本是:
https://jsfiddle.net/ck7f9t6x

userID_textfield.onkeydown = function(e) {   
    var prohibited = "!@#$%^&*()+=;:`~|'?/.><,"";
    var prohibitedchars = prohibited.split("");
    var prohibitedcharcodes = new Array();

    for (var i = 0; i < prohibitedchars.length + 1; i++) {
        prohibitedcharcodes.push(prohibitedchars[i].charCodeAt(i));
        for (var a = 0; a < prohibitedcharcodes.length + 1; a++) {
            if (prohibitedcharcodes[a] === e.which) {
                return false;
            }
            else {
                return true;
            }
        }
    }
}

我的第二个JS脚本是:
https://jsfiddle.net/2tsehcpm/

var username_textfield = document.forms.RegForm.username;
username_textfield.onkeydown = function(e) {
    var prohibited = "!@#$%^&*()+=;:`~|'?/.><,"";
    var prohibitedchars = prohibited.split("");
    var text = this.value.toString();
    var chars = text.split("");
    for (var i = 0; i < chars.length + 1; i++) {
        for (var a = 0; a < prohibitedchars.length + 1; a++) {
            if (chars[i] == prohibitedchars[a]) {
                chars[i] = null;
            }
        }
    }
    this.value = chars.join();
}

我的代码出了什么问题,我应该做些什么呢?

任何有启发性的答案将不胜感激!

最佳答案
我已经更新了你最初的小提琴here.

我为简单起见而选择的方法是获取按下的键的字符串字符,然后检查它是否在禁止的数组中.

你应该注意到我改为使用onkeypress而不是onkeydown事件,因为第一个包含修饰符,如使用fromCharCode()时的shift键,而另一个不包括(因为keypressed检查完整的键组合).

码:

el.onkeypress = function(e) {   
    // invalid character list
    var prohibited = "!@#$%^&*()+=;:`~|'?/.><,"";
    // get the actual character string value
    var key = String.fromCharCode(e.which);
    // check if the key pressed is prohibited    
    if(prohibited.indexOf(key) >= 0){
        console.log('invalid key pressed');    
        return false;
    }
    return true;    
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读