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 22 Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 Javascript
js读写json文件实例代码
Oct 21 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
微信小程序之数据双向绑定与数据操作
May 12 Javascript
Vue v-text指令简单使用方法示例
Sep 19 Javascript
JS继承定义与使用方法简单示例
Feb 19 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者的疑难问答(1)
2006/10/09 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
js几个验证函数代码
2010/03/25 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python 美化输出信息的实例
2018/10/15 Python
python协程之动态添加任务的方法
2019/02/19 Python
python中的数据结构比较
2019/05/13 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
python如何提升爬虫效率
2020/09/27 Python
python 操作excel表格的方法
2020/12/05 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
九年级历史教学反思
2014/01/27 职场文书
一份创业计划书范文
2014/02/08 职场文书
中文教师求职信
2014/02/22 职场文书
初中生评语大全
2014/04/24 职场文书
党员身份证明材料
2015/06/19 职场文书