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 相关文章推荐
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
老生常谈的跨域处理
Jan 11 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 Javascript
webpack打包js的方法
Mar 12 Javascript
vue实现表格合并功能
Dec 01 Vue.js
JavaScript实现简单计时器
Jun 22 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php session 错误
2009/05/21 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
对python的文件内注释 help注释方法
2018/05/23 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
人才市场接收函
2015/01/30 职场文书
小学运动会入场词
2015/07/18 职场文书
七年级作文之冬景
2019/11/07 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle