js自动模拟用户键盘输入,自动触发输入事件,三种方法,适用vue,react网页

本文介绍了在Vue和React中模拟和派发事件的方法,包括使用jQuery操作DOM触发change事件,Vue和纯HTML页面的input事件派发,以及针对React16的特殊处理,解决React内部value拦截问题,确保输入事件的正确触发。
摘要由CSDN通过智能技术生成

1.派发事件,这种方法适用于vue页面,和纯净的html页面;

  let nputLabel = $("div"); //这里用的是jquery,也可以适用js,注意后面操作的元素都是dom对象,所以使用了jquery后需要下标转为dom
          inputLabel[0].value = "deal";
          inputLabel[0].dispatchEvent(
            new Event("change", {
              view: window,
              bubbles: true,
              cancelable: true,
            })
          );

2.简写派发事件,也仅适用vue页面和纯净的html页面;

    let inputLabel = $(".el-input-group__prepend+.el-input__inner");
        inputLabel.val(asin);//给input赋值
        inputLabel[0].dispatchEvent(new InputEvent("input"));//触发输入事件

3.react页面专属,因为react16内部定义了descript拦截value,所以派发事件,无法触发input所绑定的事件,需要重置输入状态;

let inputLabel = $("div"); //这里获取需要自动录入的input内容
          let lastValue = inputLabel[0].value;
          inputLabel[0].value = "deal";
          let event = new Event("input", { bubbles: true });
          //  React15
          event.simulated = true;
          //  React16 内部定义了descriptor拦截value,此处重置状态
          let tracker = inputLabel[0]._valueTracker;
          if (tracker) {
            tracker.setValue(lastValue);
          }
          inputLabel[0].dispatchEvent(event);

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粉面蛋子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值