美文网首页
限制input输入特殊字符

限制input输入特殊字符

作者: 别吵让我睡觉 | 来源:发表于2020-12-31 10:52 被阅读0次

问题所在:

如何限制用户输入特殊字符

解决方法:

首先存在两种情况
1.只提醒用户输入了特殊字符

第一种效果图.jpg
这种情况的话,我是用自定义校验规则实现的,举例:
var validateName = (rule, value, callback) => {
     if (value === '') {
       callback(new Error('请输入名称'));
     }
     // 刨除_ ,-,空格之后的特殊符号
     let newValue = value.replace(/[`~!@#$%^&*()\+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '');
     if(newValue!==value){
       callback(new Error('新建表单名称不可用特殊符号( _,-,空格除外)'));
     }else{
       if(this.resourceNameList.indexOf(value)>-1){
         callback(new Error('该资源集名称已存在,请重新输入'));
       }else{
         callback();
       }
     }
   };
// 规则数组中的相关自定义验证
deviceNumber: [
         { required: true, validator: validateName, trigger: ['blur', 'change'] }
       ],

主要的思路就是,正则匹配,用空字符替换匹配到的特殊字符,如果value在替换之后还是和原字符串相同,那就证明当前名称合法,否则,说明名称包含了特殊字符,报错提醒用户。
包含所有特殊字符的写法:

let newValue = value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '').replace(/\s/g, "");

2.直接禁止输入特殊字符

<el-input
  :value="form.name"
  @input="e => form.name = validSe(e)"
></el-input>

validSe(value){
      value = value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '').replace(/\s/g, "");
      return value;
    },

当用户输入特殊字符时,input上直接不显示,只显示字母、数字、汉字。所以为了用户体验,最好还是给用户一个输入特殊字符的提示,这里感兴趣的可以自己实现一下。

相关文章

网友评论

      本文标题:限制input输入特殊字符

      本文链接:https://www.haomeiwen.com/subject/bvbhoktx.html