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 attachEvent和addEventListener使用方法
Mar 19 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
domReady的实现案例
Nov 23 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
node文件上传功能简易实现代码
Jun 16 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python3生成手写体数字方法
2018/01/30 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
求高于平均分的学生学号及成绩
2016/09/01 面试题
医学实习生自我鉴定
2013/12/12 职场文书
廉政教育心得体会
2014/01/01 职场文书
年会搞笑主持词
2014/03/27 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python