首页 > 其他分享 >vue_中文输入法情况下, 输入框v-model绑定值中没有输入值但却触发input事件

vue_中文输入法情况下, 输入框v-model绑定值中没有输入值但却触发input事件

时间:2023-08-21 20:45:52浏览次数:38  
标签:输入法 vue 绑定 值为 输入框 搜索 字符串 input model

  • 今天写的一个搜索框, 要求输入字符时不作处理, 直到用户点击搜索按钮时才执行搜索逻辑; 当用户将搜索框文本删除至空字符串时, 执行一次无搜索值的搜索逻辑, 用于将表格数据恢复至无筛选; 在这个功能上我想当然地使用了input事件用于触发输入事件, 但是被测试出bug: 当输入法是中文时, 在选字阶段会不停地触发input事件, 但是v-model绑定的值却一直是维持在空字符串, 也就是说, 用户在使用中文选字阶段会一直执行无搜索值的搜索逻辑

  • 解决问题在于: 在input绑定值为空字符串的情况下, input事件的触发有以下两种情况:

      1. 中文选词输入, 此时的v-model绑定值为空字符串, e.data存在值;
      2. 删除: e.data值为null, v-model绑定值为空字符串
    • 判定如下:

      • 当且仅当input事件对象的data属性为null, 且绑定值为空字符串的情况下, 才代表通过删除清空了输入框的值, 只有在这种情况下才会调用搜索.

      • // 只用于处理当字符串为空的时候
        const handleSearchValue = async function (event) {
          if (event.data === null && search_companyName.value === '') {
            curPage.value = 1
            await getCompanyList({ search_name: search_companyName.value })
          }
        }
        
      • <input
          type="text"
          class="search_input"
          placeholder="按企业名搜索"
          @keydown.enter.native.stop="searchCompanyByName"
          v-model="search_companyName"
          @input="handleSearchValue($event)"
        />
        

标签:输入法,vue,绑定,值为,输入框,搜索,字符串,input,model
From: https://www.cnblogs.com/isAyi/p/17647042.html

相关文章

  • VUE element-ui之table表格全局排序
    一调用后端接口排序功能步骤:标签中定义排序方法:<el-tableref="reset"v-loading="loading":data="tableData"height="520"border@sort-change="sortChange">要排序的字段......
  • vue实现简单表单收集
    vue实现简单表单收集实现<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><scriptsrc="......
  • vue3 watch 监听响应式数据变化 改变img的src
    目标:用一个图片来监视全局websocket对象的连接状态  全局websocket的写法详见:https://www.cnblogs.com/hailexuexi/p/17577818.htmlmain.js全局对象 websocket的连接状态//全局对象constglobalData=reactive({ websockStatus:"open",})app.provide('globalData',......
  • vscode 快捷键生成vue模板
    vscode快捷键生成vue模板教程我们在开发vue项目时,需要一个vue模版,去创建一个组件,可以使用快捷键1.文件--》首选项--》用户片段2.搜索vue选择3.模板内容填充{"Printtoconsole":{"prefix":"vue","body":["<template>",......
  • 在Vue3后台管理系统中使用watch和watcheffect
    ​ 1、watch在Vue3中的组合式API中,watch的作用和Vue2中的watch作用是一样的,他们都是用来监听响应式状态发生变化的,当响应式状态发生变化时,都会触发一个回调函数。constmessage=ref("test");watch(message,(newValue,oldValue)=>{console.log("新值:",ne......
  • Vue中key的作用
    1.虚拟Dom中key的作用:    key是虚拟DOM对象的标识,当数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,    随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较,比较规则如下:2.对比规则:    (1).就虚拟DOM中找到了与新虚拟DOM相同的key:    ......
  • OpenTiny Vue 3.10.0 版本发布:组件 Demo 支持 Composition 写法,新增4个新组件
    我们非常高兴地宣布,2023年8月14日,OpenTinyVue发布了v3.10.0 ......
  • Vue3 toRef响应式失效问题排查
    父组件conststuRecordInfo=ref<any>({stuNum:11111})//接口请求返回stuRecordInfo.value.stuNum=22222<StuRecord:info="stuRecordInfo":pictureInfo="pictureInfo"/>子组件constinfo=toRef(props,'info')consts......
  • vue——debounce防抖函数无效
    参考:vue记录-vue中使用lodash_.debounce防抖不生效原因,解决方案https://blog.csdn.net/Delete_89x/article/details/122000444 问题代码:<el-inputv-model="slotProps.form.condition"placeholder="请输入"@input="inputChange"></el-......
  • vue中export default data()外面的数据如何通过$t获取动态值
    如果将数据放到外面的`const`中,而不是在Vue组件的`data`选项中,那么无法直接通过`$t`方法来获取翻译文件的值。因为`$t`方法是Vue-i18n插件提供的实例方法,需要在Vue组件中使用。如果你想在外部使用`$t`方法来获取翻译文件的值,可以将Vue-i18n的实例导出,并在外部文件中引入该实例来......