vue3过滤输入框首尾空格

vue3过滤输入框首尾空格

  1. 在 directive文件夹下 新建 trim.ts 文件
    在这里插入图片描述
// trim.ts 文件
import { App } from "vue"

function getInput(el: { tagName: string; querySelector: (arg0: string) => any }) {
  let inputEle
  if (el.tagName !== 'INPUT') {
    inputEle = el.querySelector('input')|| el.querySelector('textarea')
  } else {
    inputEle = el
  }
  return inputEle
}
function dispatchEvent(el: { dispatchEvent: (arg0: Event) => void }, type: string) {
  const evt = document.createEvent('HTMLEvents')
  evt.initEvent(type, true, true)
  el.dispatchEvent(evt)
}

// 过滤前后空格的指令 v-trim
export const trim = (app: App<any>) => {
  app.directive('trim', {
    mounted(el: { inputEle: any; _blurHandler: (event: any) => void; _keyHandler: (event: any) => void }) {
      const inputEle = getInput(el)
      const handler = function(event: { target: { value: string } }) {
        const newVal = event.target.value.trim()
        if (event.target.value !== newVal) {
          event.target.value = newVal
          dispatchEvent(inputEle, 'input')
        }
      }
      // 回车后过滤空格(因为输入框可以回车调接口查询,所以这时候单纯的失去焦点过滤不起作用,要对回车键单独做一下处理)
      const keydown = function(event: { keyCode: number; target: { value: string } }) {
        if (event.keyCode === 13) {
          const newVal = event.target.value.trim()
          if (event.target.value !== newVal) {
            event.target.value = newVal
            dispatchEvent(inputEle, 'input')
          }
        }
      }
      el.inputEle = inputEle
      el._blurHandler = handler
      el._keyHandler = keydown
      inputEle.addEventListener('blur', handler)
      inputEle.addEventListener('keydown', keydown)
    },
    unmounted(el: { _blurHandler?: any; _keyHandler?: any; inputEle?: any }) {
      const { inputEle } = el
      inputEle.removeEventListener('blur', el._blurHandler)
      inputEle.removeEventListener('keydown', el._keyHandler)
    }
  })
}

  1. 在 directive文件夹下 新建 index.ts 文件
// index.ts文件

import type { App } from 'vue';
import {trim} from '/@/directive/trim'
/**
 * 导出指令方法:v-xxx
 * @methods trim去除空格指令,用法:v-trim
 */
export function directive(app: App) {
    // 去除空格
	trim(app);
}
  1. 在 main.ts中引入
    在这里插入图片描述
import { directive } from '/@/directive/index';
const app = createApp(App);
directive(app);
app.mount('#app')
  1. 使用
    在这里插入图片描述
 <el-form-item :label="$t('message.application.table.description')" prop="applicationDescribe">
     <el-input v-trim maxlength="200" show-word-limit v-model="form.applicationDescribe" :rows="2"
         type="textarea" :placeholder="$t('message.application.table.Pleasedescription')" />
 </el-form-item>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue前端中,可以使用多种方法去除输入框中的空格。以下是几种常用的方法: 1. 使用v-model.trim指令:在Vue中,v-model指令用于实现双向数据绑定。通过在v-model上添加.trim修饰符,可以自动去除输入框中的首尾空格。例如: ``` <el-input v-model.trim="value"></el-input> ``` 这样设置之后,用户在输入框中输入内容时,首尾空格会自动被去除。 2. 使用@input事件:如果希望在用户输入时实时去除所有空格,可以使用@input事件来监听输入框的变化,并在事件处理函数中去除空格。例如: ``` <el-input :value="value" @input="handleInput"></el-input> ... methods: { handleInput(value) { this.value = value.replace(/\s/g, ''); } } ``` 在handleInput方法中,使用replace方法结合正则表达式/\s/g来去除输入框中的所有空格。 3. 使用自定义过滤器:除了上述方法,你还可以使用Vue的自定义过滤器来去除输入框中的空格。首先,在Vue实例中定义一个过滤器: ``` filters: { removeSpace(value) { return value.replace(/\s/g, ''); } } ``` 然后,在输入框中使用该过滤器: ``` <el-input :value="value | removeSpace"></el-input> ``` 这样,输入框中的值会通过removeSpace过滤器处理,去除其中的空格。 总结来说,在Vue前端中去除输入框中的空格可以通过v-model.trim指令、@input事件或自定义过滤器来实现。具体选择哪种方法取决于你的需求和代码结构。希望以上方法对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值