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 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
详解Angular 4.x Injector
May 04 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
js正则相关知识点专题
May 10 Javascript
简化版的vue-router实现思路详解
Oct 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面向对象法则
2012/02/23 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
什么是.net
2015/08/03 面试题
人事助理自荐信
2014/02/02 职场文书
文明城市创建标语
2014/06/16 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
模范教师材料大全
2014/12/16 职场文书
街道社区活动报告
2015/02/05 职场文书
厉行节约工作总结
2015/08/12 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js