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 相关文章推荐
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
那些年,我还在学习jquery 学习笔记
Mar 05 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
javascript基础知识之html5轮播图实例讲解(44)
Feb 17 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
js实现拖拽与碰撞检测
Sep 18 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 Cookie的使用教程详解
2013/06/03 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
做网页的一些技巧
2007/02/01 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
谈谈vue中mixin的一点理解
2017/12/12 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
python中logging库的使用总结
2017/10/18 Python
Python中turtle作图示例
2017/11/15 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
优秀护士演讲稿
2014/04/30 职场文书
大学生团员个人总结
2015/02/14 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android