2021-08-13

2021-08-12  本文已影响0人  麦田_426

在系统页面上修改机器设备名称

今天在做修改测试提交的bug的时候, 发现,自己做设备修改的时候忘记考虑,机器设备名称不能含有中文,以及特殊字符的问题(我不确定能不能含有特殊字符,这里我给了限制)
然后,我以为利用正则表达式,我会很快的修改好这个bug,但是找半天发现,网络上的正则表达式都未能满足自己的需求; 于是,耗费我一些时间去写。写下这篇文章,方便自己记忆,也方便提醒自己不可大意。
如果朋友们有更好的解决方法,欢迎给你建议。祝您开心!

<input type = "text" class = "de_inp" onkeyup = "validateValue(this)" class="form-control" placeholder=""  title="此设备名称" disabled />

     function validateValue(that) {
            let that_val =  that.value; //获取当前值
            let chineseCheck = /.*[\u4e00-\u9fa5]+.*$/;  //检查是否含有中文
            if(chineseCheck.test(that_val)){
                let chinesCh = that_val.match(/[\u4e00-\u9fa5]/g).join("");  //筛选出input值中的所有的中文
                let chinesChLg = chinesCh.length;  //获取中文长度
                let chinesOne = that_val.indexOf(chinesCh);  //获取中文在字符串中首次出现的位置
                let that_valArr = that_val.split(''); //作为数组处理
                that_valArr.splice(chinesOne, chinesChLg);  //去除数组中的汉字
                let allVal = that_valArr.join('');  //数组处理成字符串
                
                that_val = allVal;
            }
            //console.log(that_val, 'allValallVals');
            let IllegalString = "[`~!#$^&*()=|{}':;',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘’";
            let textboxvalue = that_val;
            let index = textboxvalue.length - 1;
            
            let s_end = that_val.charAt(index);  //每次都取最后一个字符也就是新输入的字符
            if (IllegalString.indexOf(s_end) >= 0) {
                s_end = textboxvalue.substring(0, index);
                that.value = s_end;
            }else{
                that.value = that_val;
            }
        }

主要思路: 启用keyup事件,取到input值,然后先判断是否含有中文,然后筛选出所有的中文,获取中文长度,值转化为数组,数组自带方法去去除中文,然后再转化为字符串; 然后再进行特殊字符的过滤; 如此便完成了限制特殊字符和中文的输入。

起风了,唯有努力生存。大家加油

上一篇 下一篇

猜你喜欢

热点阅读