vue中如何去掉空格的方法实现


Posted in Javascript onNovember 09, 2018

一、问题

vue中当用户提交表单时,有的数据需要去掉前后空格然后再向后端发送。

二、解决方法

首先可以使用v-model.trim这个v-model修饰符去解决它,但是当用户输入\u200B时,这个方法就不奏效了,这时我们可以去一下v-model.trim这个修饰符的源码

function genDefaultModel (
 el: ASTElement,
 value: string,
 modifiers: ?ASTModifiers
): ?boolean {
 const type = el.attrsMap.type
 const { lazy, number, trim } = modifiers || {}
 const needCompositionGuard = !lazy && type !== 'range'
 const event = lazy
  ? 'change'
  : type === 'range'
   ? RANGE_TOKEN
   : 'input'

 let valueExpression = '$event.target.value'
  // 去掉空格
 if (trim) {
  valueExpression = `$event.target.value.trim()`
 }
 if (number) {
  valueExpression = `_n(${valueExpression})`
 }

 let code = genAssignmentCode(value, valueExpression)
 if (needCompositionGuard) {
  code = `if($event.target.composing)return;$[code]`
 }

 addProp(el, 'value', `(${value})`)
 addHandler(el, event, code, null, true)
 if (trim || number || type === 'number') {
  addHandler(el, 'blur', '$forceUpdate()')
 }
}

上面的源码处理方式我们也可以理解为下面这种方式:

<input :value="name" @input="if($event.target.composing)return;name=$event.target.value.trim()" type="text"/>

所以我们可以把上面的方法强化或者改进一下:

<template>
 <div @input="removeSpaces">
  <el-input v-model.trim="value"></el-input>
 </div>
</template>
<script>
  export default {
    data() {
      return {
        value : ''
      }
    },
    methods: {
      removeSpaces(event) {
        if(event.target.composing){
          return
      }
      this.value = event.target.value.trim()
      this.value = this.value.replace("\\u200B","")
     }
    }
  }
</script>

同理,使用这种方法我们可以定制一些其他功能的输入框组件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
html+js实现动态显示本地时间
Sep 21 Javascript
js实现防止被iframe的方法
Jul 03 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
Oct 14 Javascript
jquery-mobile基础属性与用法详解
Nov 23 Javascript
妙用Angularjs实现表格按指定列排序
Jun 23 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 Javascript
详解vue mixins和extends的巧妙用法
Dec 20 Javascript
35个最好用的Vue开源库(史上最全)
Jan 03 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
Vue press 支持图片放大功能的实例代码
Nov 09 #Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 #Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 #Javascript
webpack4.x CommonJS模块化浅析
Nov 09 #Javascript
angular4笔记系列之内置指令小结
Nov 09 #Javascript
node版本管理工具n包使用教程详解
Nov 09 #Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
Nov 08 #Javascript
You might like
php下使用SMTP发邮件的代码
2008/01/10 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
实例介绍Python中整型
2019/02/11 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python创建临时文件和文件夹
2020/08/05 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
大学生应聘自荐信
2013/10/11 职场文书
自荐信结尾
2013/10/27 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
ktv好的活动方案
2014/08/17 职场文书
校本课程教学计划
2015/01/19 职场文书
刑事申诉状范文
2015/05/20 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js