Element UI el-input禁止输入特殊表情符号和一些特殊字符

页面

 <el-form-item
                label="备注"
                prop="desc"
                :rules="[
                  { required: true, message: '请输入备注', trigger: 'blur' }
                ]"
              >
                <el-input
                  v-model="ruleForm.desc"
                  type="textarea"
                  @input="handleInput"
                  @paste="handlePaste"
                />
              </el-form-item>

方法:提供了最全面的保护,包括输入过滤、粘贴处理和用户提示,能够有效防止表情符号和特殊字符的输入。

  handleInput(value) {
      const filteredValue = this.removeSpecialChars(value)
      if (filteredValue !== value) {
        this.ruleForm.desc = filteredValue
      }
    },

    handlePaste(event) {
      // 处理粘贴事件
      this.$nextTick(() => {
        const filteredValue = this.removeSpecialChars(this.ruleForm.desc)
        if (filteredValue !== this.ruleForm.desc) {
          this.ruleForm.desc = filteredValue
          this.$message.warning('已自动过滤表情符号和特殊字符')
        }
      })
    },
    removeSpecialChars(str) {
      if (!str) return str

      // 移除表情符号和一些特殊字符
      return str
        .replace(/[\uD83C-\uDBFF\uDC00-\uDFFF]/g, '') // 表情符号
        .replace(/[\u2600-\u26FF\u2700-\u27BF]/g, '') // 杂项符号
        .replace(/[\u2300-\u23FF\u2B00-\u2BFF]/g, '') // 其他符号
        .replace(/[\u2900-\u297F\u2190-\u21FF]/g, '') // 箭头符号
        .replace(/[\u25A0-\u25FF\u2500-\u259F]/g, '') // 几何符号
        .replace(/\s+/g, ' ') // 多个空格替换为单个空格
        .trim() // 去除首尾空格
    },
### 实现Element UI中`el-input`组件限制输入范围为-180到180且最多六位小数 为了实现在 `el-input` 中仅允许输入 `-180` 到 `180` 范围内的数值并控制小数点后的精度不超过6位,可以采用如下方法: #### 方法一:通过自定义验证逻辑配合正则表达式 可以在 `<el-input>` 上绑定 `v-model` 并监听其 `@input` 事件来实时检测用户的输入。每当用户改变输入框中的内容时触发该事件,并在此处执行必要的校验操作。 ```html <template> <div> <!-- 输入--> <el-input v-model="angleValue" @input="validateInput"></el-input> </div> </template> <script> export default { data() { return { angleValue: '' }; }, methods: { validateInput(newValue) { let value = newValue.replace(/[^-?\d*.]/g, ''); // 清除非法字符 // 定义匹配模式 const pattern = /^(-?(?:\d{1,3}(?:\.\d{0,6})?|\.(\d){0,6}))$/; if (pattern.test(value)) { // 如果满足条件,则转换成浮点型再做一次边界判断 let num = parseFloat(value); if (num >= -180 && num <= 180) { this.angleValue = value.length === 0 ? "" : num.toFixed(6); // 控制显示的小数位数 } } else { this.angleValue = ''; } } } }; </script> ``` 此段代码实现了当用户尝试输入超出规定区间或不符合格式的数据时自动清除错误部分的功能[^1]。 #### 方法二:利用内置属性与CSS样式调整 对于希望更简洁地实现这一功能的情况,还可以考虑直接使用 `el-input` 提供的 `min`, `max` 属性以及 CSS 来隐藏默认的增减按钮(适用于 type='number' 类型),从而达到相同的效果。 ```css /* 移除浏览器自带的上下箭头 */ input::-webkit-inner-spin-button, input::-webkit-outer-spin-button { -webkit-appearance: none !important; } input[type="number"] { -moz-appearance:textfield; } .el-input-number .el-input__inner{ padding-right: 0px!important; /* 去掉右侧间距 */ } ``` ```html <!-- HTML结构 --> <el-input-number v-model="angleNumber" controls-position="right" min="-180" max="180" step=".000001"> </el-input-number> ``` 这种方法不仅能够限定输入范围,还能借助于 `step` 参数精确指定增量单位,确保每次变化都在合理的误差范围内[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值