首页 > 其他分享 >原生JS修改输入框value,并触发前端框架改变内部管理的响应式数据

原生JS修改输入框value,并触发前端框架改变内部管理的响应式数据

时间:2023-04-13 22:33:08浏览次数:49  
标签:触发 value JS 输入框 let 事件 input 模拟

背景

有时候,我们需要在一个网站上重复地执行某些操作,例如:输入>查询>输入>查询······这时候,我们可以写一个 js 自动化脚本执行这些操作,来保护我们的手指关节,以及键盘鼠标。

对于大多数网站来说,使用web框架如vue进行开发,这些框架使用内部的响应式系统来管理数据,针对input元素,vue的做法是监听它的change事件,因此直接修改输入框的value值是无效的。

我们可以模拟输入事件,并触发它,确保框架内部的响应式系统能修改数据。

接下来通过简单的代码说明如何模拟事件。

模拟事件

简单代码示例:

//仅为示例,实际上是一个包含要查询的数据的巨长的数据
let array = ['7888','89998','9908890'];
//拿到输入框的dom
let input = document.querySelector("input")
//模拟输入事件
let inputEvent = new Event('input', { bubbles: true });
//拿到按钮的dom
let search = document.querySelector(".search")
//模拟点击事件
const clickEvent = new Event('click', { bubbles: true });
//开始循环
for(let i=0;i<array.length;i++){
    //修改输入框的值
    input.value=array[i]
    //触发输入事件
    input.dispatchEvent(inputEvent);
    //触发点击事件
    search.dispatchEvent(clickEvent);
}

在线演示

一个在线演示,演示模拟输入
https://play.vuejs.org/#eNp9UsGK1EAQ/ZWiWUgWxgleh+ywInvwIAgejYdMUuO2Jp22Ux1nCDl6EhERBfXgSb3JHjz7NxvmM6zuHnczsuwpXVWvqt6rl17c03reWRQLkbaFkZqgRbJ6mSlZ68YQ9GBwDQOsTVNDxNDoqvRwe7/hl0JF+/I8meTc3GtwJw3ZvHqgtL1GO+z8ecuoolEtAUmqEE7cyjjq7tRNiRXk5pmt3Q7c5LWuMDrOVJoEtsyTA0LO54QcAaTnd5d9vx81DGnCsc9P6e5nLzzqJBP+mwlIAnRliRoFp0UlixdcnpKPjzOx3H3+Mr75tvvz4fL19zQJcG5NkysqYib+u8UNNy5xLRU+Mo1u4yeRJxE9ZXkhf1ZLcnmrS54YuPrybeql4+heALTVXhtuKBMhtejyyk4Eh+ypb+LsEfLK+HDhDI6wcxKIjUBW4ibwDVyrO9eh5r2jrDVTuPHOs5jcVmy6VQVJPuvhNXsWwXsIAomyKbzb85cWzfYxVlhQY+LIV531AA7sKfGfovAVnLn3P8SsX9nVqsJ2Qcbi4Bt8JRBnkVPvdj9/XL57z+aMHy/Gt7/Gr7/HTxdOW0ahqZStzqk4Dzv8Vh45ZEoMfwGGlzXw

小结

  1. 在触发完输入事件后,可以根据实际情况,加一点延时,再触发点击事件。
  2. 事件的冒泡设置为true,确保能触发框架的响应。

标签:触发,value,JS,输入框,let,事件,input,模拟
From: https://www.cnblogs.com/sq800/p/17316806.html

相关文章

  • js中一个移除对象中子数组中空值的函数
    js中一个移除对象中子集数组中空值(null,undefined)的函数functionremoveNull(obj){letdelarr=[];for(letiinobj){//排除法寻找对象类型if(typeof(obj[i])==='boolean'||typeof(obj[i])==='string'||typeof(obj[i])==......
  • js的一些小问题集合
    1.等于号的应用functionreverse(){varcheckbox=document.getElementsByName("hobby");for(leti=0;i<checkbox.length;i++){if(checkbox[i].checked==true){//注意一个问题,在if中用双等于来作为正确的判断单等于号为赋值checkbox[i].checked=false;}elsecheck......
  • js基础:1.
    javascript(简称“js”)开发外部脚本语言是轻量级解释型语言开始于1995年网景公司javascript的标准是ECMAscript互联网是1970年1月1号js代码必须写在script标签里(预格式化文本)预格式输出标签console.log输出使用:控制台打印语句(控制台日志)变量var声明关键字关......
  • JSON Web Tokens (JWT) — the only explanation you will ever need
    本文摘抄自ArielWeinberger博客  JSONWebTokens(JWT)—theonlyexplanationyouwilleverneed|byArielWeinberger|Medium JSONWebTokens(JWT)—theonlyexplanationyouwilleverneedJSONWebTokensarechangingtheworldf......
  • JSON.stringify()的几个场景
    循环引用使用JSON.stringify()时,遇到循环引用的时候,会抛出错误TypeError:ConvertingcircularstructuretoJSON,如果需要强行转成字符串的话,需要利用到该方法的第二个参数。主要思路其实就是将循环引用的部分替换成某个标识,等到解析的时候去替换掉,就可以拿到原来的循环引用的......
  • 栈空间和堆控件:JS数据怎么存储的?
    JS数据存储主要分堆和栈两种,栈空间:通常情况栈空间不会设置太大,主要用来存放一些原始类型的小数据,原始类型的数据有:Boolean、Null、Undefined、Number、BigInt、String、Symbol,栈空间具有空间小,但是读取速度快的特点堆空间:空间很大,但是速度相对堆空间较慢,主要存储引用型的数据,创......
  • json
    1、介绍JSON:JavaScriptObjectNotation(JavaScript对象表示法)JSON是存储和交换文本信息的语法,类似XML。JSON比XML更小、更快,更易解析。JSON易于人阅读和编写。2、数据类型(1)数字(整数或浮点数)(2)字符串(在双引号中)(3)逻辑值(true或false)(4)数组由[]包围,其内......
  • 【js】js内置对象Error(错误机制)
    Error:基类型;ReferenceError:找不到对象时抛出;SyntaxError:语法错误;TypeError:类型错误时抛出;EvalError:eval()函数发生异常时抛出;InternalError:js引擎内部发生的错误;RangeError:数值超出范围时触发;URIError:URI格式不正确时抛出,常发生在encodeURI或者decodeURI调用时;DOMExcept......
  • 使用vue+bpmn-js实现activiti的流程设计器__Vue.js
    https://www.vue-js.com/topic/5f6c4af84590fe0031e591ef完整代码见github:https://github.com/griabcrh/vue-activiti-demo适配activitiimportactivitiModdleDescriptorfrom'../js/activiti.json';this.bpmnModeler=newBpmnModeler({container:ca......
  • adobe安装提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”的解决方法
    mac电脑安装Adobe时,会提示错误“Error:SyntaxError:JSONParseerror:UnexpectedEOF”,这是怎么回事儿的,不管您是安装AI、ps、PR还是lr,如果也遇到相同的问题,可以参考一下方法解决。adobe安装提示错误“Error:SyntaxError:JSONParseerror:UnexpectedEOF”的解决方法,如下:需要使用A......