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 相关文章推荐
无阻塞加载脚本分析[全]
Jan 20 Javascript
js取得url地址参数实例
Feb 22 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
JavaScript函数节流概念与用法实例详解
Jun 20 Javascript
javascript读取文本节点方法小结
Dec 15 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 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 手机归属地查询 api
2010/02/08 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
js数组去重的方法总结
2019/01/18 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python版DDOS攻击脚本
2019/06/12 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
企业申诉管理制度
2014/01/30 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
志愿者宣传口号
2014/06/17 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
师德师风个人整改措施
2014/10/27 职场文书
学习雷锋主题班会
2015/08/14 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle