首页 > 其他分享 >VUE 输入框实现光标插入,设置光标位置并删除光标内容

VUE 输入框实现光标插入,设置光标位置并删除光标内容

时间:2023-12-06 09:57:29浏览次数:25  
标签:cursorPosition VUE end value 输入框 let cont 光标

参考https://blog.csdn.net/m0_62333895/article/details/127648295

自己写的例子

const cursorPosition = ref("");
const handleFocus = (event: any) => {
    cursorPosition.value = event.srcElement.selectionStart;
    console.log("cursorPosition.value", cursorPosition.value);
    // const input = event.target;

    // if (this.text !== "") {
    //     this.$nextTick(() => {
    //         input.setSelectionRange(0, 1); // 设置光标位置为第一个字符之前
    //     });
    // } else {
    //     input.select(); // 选中全部文本
    // }
};
const clickToContent = (index: any, val: any) => {
    if (cursorPosition.value >= 0) {
        let num = cursorPosition.value;
        let cont = messageInfo.value[index].content;
        let right = cont.slice(0, num);
        let left = cont.slice(num);
        messageInfo.value[index].content = right + val + left;
        val;
    }
    console.log(index, val);
};
const del = (e: any, index: any, variableDescription: any) => {
    console.log("del", e);
    console.log("variableDescription", variableDescription);
    let cont = messageInfo.value[index].content;
    if (!cont) return;
    let start = e.target.selectionStart;
    let end = e.target.selectionEnd;
    let variableData = JSON.parse(variableDescription);
    let variableList = [];
    console.log("variableData", variableData);
    for (let val in variableData) {
        variableList.push(variableData[val]);
    }
    variableList;
    if (start == end) {
        //删除操作判断,
        let left = cont.slice(end - 7, end);
        let right = cont.slice(end - 1, end + 5);
        console.log("left", left);
        if (variableList.includes(left)) {
            //判断变量中是否存在,存在则设置光标位置,不存在则不用管
            e.target.setSelectionRange(end - 7, end); //设置光标位置
            e.preventDefault(); //阻止浏览器的默认行为,防止删除
        } else if (variableList.includes(right)) {
            e.target.setSelectionRange(end - 1, end + 5);
            e.preventDefault();
        }
    }
};

 

标签:cursorPosition,VUE,end,value,输入框,let,cont,光标
From: https://www.cnblogs.com/lsc-boke/p/17878850.html

相关文章

  • 【VUE】vue动态变换背景图片的实现 +背景图片铺满+ 一般路由的配置
    一、动态变换背景图片的实现代码如下:<template><divclass="body"v-loading="loading":style="{backgroundImage:'url('+bgi+')'}"></div></template><script>data(){reyurn{ b......
  • Vue-Router
    Rouer组件可以构造单页引用多页应用:mpa每一个页面都是一个html文件方便seo优化单页应用:spa 知乎网站掘进百度移动端单页用于取决情况: 1.用户群体比较多原理:相当于一个a标签,导航栏上切换不同的视图大部分做的vue使用都是后台管理程序在使用router是vue就会提供......
  • Vue-Vuex
    Vuexvuex是专为vue.js应用程序开发的管理模式,它采用集中式储存管理应用的去全部组件状态,并以响应的规则邦正状态可以以一种可预测的方式变化主要管理数据使用vuex的时机,vuex相当于商店,谁都可以取买卖东西当两个组件没有关系的情况下1.如果项目中型或者大型,不推荐使用父......
  • Vue
    VUEvue渐进式将复杂的东西给处理,只需要调用api就可以进行网页的设计前端框架的几乎都一样vue:react:facebookangualr:谷歌库的区别与库的区别jquery库:对dom的操作art-template库:模板引擎的渲染高效框架:大而全,简单渲染+请求处理+模板渲染框架全家桶库小套餐......
  • vue 树形选择器数据处理 + 搜索查询时每一层级都可选
    vue树形选择器主要用后端处理显示数据根据el-Element官网可知,想要使用树形选择器<el-tree-select>就要提供以下形式的数据:data=[{value:'1',label:'Levelone1',children:[{value:'1-1',label:'Leveltwo1-1&......
  • uniapp 微信小程序 onLaunch触发vuex 请求http报错600009?
    当在uniapp中的微信小程序中使用vuex触发http请求时,出现错误码600009通常表示网络请求发生了错误或失败。这个错误码通常不是uniapp或vuex特定的错误码,而是微信小程序的错误码。以下是一些可能导致此错误的原因和解决方法:网络连接问题:首先,确保您的设备已连接到互联网,并且网络连接稳......
  • 记录--Vue使用CDN引入,响应式失效?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助背景最近心血来潮,想要在本地开发时,也用CDN的方式引入Vue,想着既然通过CDN引入了,那么在项目中就没必要再importVue,然后把项目中引入Vue的地方都删掉,结果改完后,界面看似正常运行,但数据变更后,界面没有重新渲染。......
  • vue3使用虚拟化表格自定义表格并动态生成表头
    elementPlus的虚拟化表格用的是lang=tsx,先安装cnpmi@vitejs/plugin-vue-jsx然后去vite.config.ts里加配置importvueJsxfrom'@vitejs/plugin-vue-jsx'plugins:[vue(),vueJsx(),]再去tsconfig.json中加东西//不要把compilerOptio......
  • vue项目:如何在编辑用户信息后,能够及时更新layout下的navar组件中的用户名,而不是手动刷
    问题描述:layout下的navar组件中展示用户名,初始化时进入layout层会进入mouted中请求接口数据展示名称,但是在编辑弹框中编辑成功后,关闭弹框,此时不会走layout的mouted,因为layout组件的mouted已经加载过一次了,不手动刷新浏览器是不会走mouted生命周期的。那怎么解决这个不能及时更新数......
  • vue中引用utils中的方法
    utils中的目录解构如下(utils在src目录下),以深拷贝为例:deepClone文件的代码如下:functiondeepClone(substance){if(typeofsubstance!=='object'||substance==null){returnsubstance;}constresult=Array.isArray(substance)?[]:{};for(constkey......