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 相关文章推荐
Javascript 日期处理之时区问题
Oct 08 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
js setTimeout opener的用法示例详解
Oct 23 Javascript
JavaScript调用ajax获取文本文件内容实现代码
Mar 28 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
用js判断是否为360浏览器的实现代码
Jan 15 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
浅析JavaScript中的事件机制
Jun 04 Javascript
jQuery实现表单步骤流程导航代码分享
Aug 28 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
javascript使用substring实现的展开与收缩文字功能示例
Jun 17 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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
mysql limit查询优化分析
2008/11/12 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python遍历数组的方法小结
2015/04/30 Python
Python实现的科学计算器功能示例
2017/08/04 Python
Python之循环结构
2019/01/15 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python安装后的目录在哪里
2020/06/21 Python
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
redis 解决库存并发问题实现数量控制
2022/04/08 Redis