首页 > 其他分享 >vue+element输入框校验输入汉字再输入数字看似正常,实则有大问题,保存时数据不对

vue+element输入框校验输入汉字再输入数字看似正常,实则有大问题,保存时数据不对

时间:2023-05-08 11:26:34浏览次数:37  
标签:vue 保存 value element 输入框 inputValue replace 输入

在vue+element UI 项目中经常会使用到输入框限制为整数或者小数的需求,一般采用如下oninput="value=value.replace(/[^0-9.]/g,'')"解决,

<el-input        :placeholder="请输入整数或者小数"        v-model="inputValue"       oninput="value=value.replace(/[^0-9.]/g,'')" ></el-input>   你会发现,当你输入汉字时,确实没有显示上去,再输入数字能正常显示,但是,问题来了,你保存的时候却不是你输入的,通常是0,这样不细心检查还查不出来,到时候出问题了还以为是数据出错。 以下解决方案:

该问题是由于 oninput 方法限制了输入框中输入的字符,只允许数字(0-9)和小点号(.)的输入。当输入非法字符(如汉字)时,value.replace(/[^0-9.]/g,'') 会将其替换为空字符串,因此输入框不会显示该字符。

如果您想要在保存数据时获取到输入框中输入的文本内容,可以使用 v-model 来双向绑定数据,并将 oninput="value=value.replace(/[^0-9.]/g,'')" 改为 input 事件监听器:

<template>
  <el-input v-model="inputValue" @input="handleInput"></el-input>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  },
  methods: {
    handleInput(val) {
      // 过滤非法字符
      this.inputValue = val.replace(/[^0-9.]/g, '')
    },
    saveData() {
      // 在此处使用 this.inputValue 来保存输入框中的数据
    }
  }
}
</script>

在上述代码中,我们使用 @input 添加了一个 input 事件监听器,并在 methods 中定义了处理该事件的方法 handleInput。在该方法中,我们通过正则表达式过滤非法字符,并用赋值运算符来更新 inputValue 的值。在 saveData() 方法中,我们可以直接使用 this.inputValue 来获取输入框中的值,并进行保存。这样就可以实现即使不输入汉字也能保存该字段的值。

希望这个示例对您有所帮助。

标签:vue,保存,value,element,输入框,inputValue,replace,输入
From: https://www.cnblogs.com/zyz-s/p/17381177.html

相关文章

  • vue实现表格穿梭框
    新建穿梭组件  bTransfer.vue1<template>2<divclass="bpo-table-transfer">3<divclass="bpo-table-transfer-panel">4<pclass="transfer-panel-header">5<span>{{titleT......
  • fastadmin弹出输入框
     {name:'click',title:__('点击执行事件'),text:'一键发放',classname:'btnbtn-xsbt......
  • 列表的批量操作组件封装 + 权限 ,如何更优雅的实现呢?Vue3
    这个组件解决的问题?在以往的项目当中,我从未想过要对批量/列表数据的操作按钮做什么变动,直到最近的一次开发,让我突然觉得可以将操作按钮也做成一个公共组件,在做前端开发时,更加专注于js代码逻辑。如何使用?全局(main.js中)引用操作组件BatchOperation.vue创建页面操作按钮act......
  • java基于springboot+vue非前后端分离的学生成绩管理系统、学生信息管理系统,附源码+数
    1、项目介绍java基于springboot+vue非前后端分离的学生成绩管理系统、学生信息管理系统。本文首先介绍了学生成绩管理的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计......
  • Vue.js:Vue-Router动态路由从服务器接口获取路由数据
    (目录)文档https://v3.router.vuejs.org/zh/installation.html版本号"vue":"2.6.10","vue-router":"3.6.5",有几种方式实现动态路由:前端配置完整路由,通过接口返回的数据判断是否可显示,是否可访问前端配置部分路由,由后端接口返回的数据生成新路由抛开路由的思维,是否......
  • element中表格的另一种显示方法
    正常(默认展示该数据的相关属性值):      <el-table-column       prop="name"       label="姓名"       width="180"      ></el-table-column>转换法(去掉prop属性,改为用值判断显示内容):     ......
  • Vue2入门之超详细教程九-监视属性
    1、简介监视属性watch:1.当被监视的属性变化时,回调函数自动调用,进行相关操作2.监视的属性必须存在,才能进行监视!!3.监视的两种写法:(1) newVue时传入watch配置(2) 通过vm.$watch监视深度监测:(1) Vue中的......
  • Ubuntu sudo不用输入密码的方法
    在启动时进入安全模式,这时是用root登录的,执行:chmod740/etc/sudoers然后打开/etc/sudoers这个文件,把最后一行:#UserprivilegespecificationrootALL=(ALL:ALL)ALL#Allowmembersofgroupsudotoexecuteanycommand%sudoALL=(ALL:ALL)ALL改为 #Use......
  • VueUse 是怎么封装Vue3 Provide/Inject 的?
    Provide/InjectProvide和Inject可以解决Prop逐级透传问题。注入值类型不会使注入保持响应性,但注入一个响应式对象,仍然有响应式的效果。Provide的问题是无法追踪数据的来源,在任意层级都能访问导致数据追踪比较困难,不知道是哪一个层级声明了这个或者不知道哪一层级或若干个......
  • 在vue3中使用elementPlus的el-select时样式穿透问题
    下拉框的option样式只能在全局样式里改,千万不能用scope,否则不生效<el-selectclass="select":popper-append-to-body="false"v-model="selectValue"placeholder="请选择"popper-class="select-option"><......