在系统页面上修改机器设备名称
今天在做修改测试提交的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值,然后先判断是否含有中文,然后筛选出所有的中文,获取中文长度,值转化为数组,数组自带方法去去除中文,然后再转化为字符串; 然后再进行特殊字符的过滤; 如此便完成了限制特殊字符和中文的输入。
起风了,唯有努力生存。大家加油
网友评论