Js在控制台如何模拟键盘输入

前提是在浏览器的console控制台输入代码,可以模拟键盘输入。

想在一个input中改变value的值,input如下。

<input form="[object Object]" type="text" id="baseInfoForm_itemName" class="ant-input" value="">

在控制台中输入如下代码

$("#baseInfoForm_itemName").value = "378868653"

前端虽然改变了,但是提交的时候,仍然提示没有填写信息。

在网上查了很多资料,大部分都不行。

希望可以获得大佬的帮助。如果可以,可以详细一点。

万分感谢!

阅读 12k
4 个回答

抱歉,此前没有很认真地审题,武断地认为是用了 jQuery

但其实不是,这里的 $ 实际上是现代浏览器默认提供的一个 DOM 选择接口 window.$,但我一时找不到有关这个接口的官方文档,该函数的功能大致如下:

$(selector, startNode);
// 基本等价于:
startNode.querySelector(selector);

这里的网页极有可能用了框架,并且绑定了输入,框架不会检测 value 的变化,最好的方法是能够介入源码,在源码里修改,或者根据框架搜集事件的方法做一些 hack

看到题主找了一些 React 相关的解决方案但是没有奏效,估计是 React 修改了事件池的实现,或者用的框架不是 React

至于解决方案,不好盲猜。


以下为原答案,仅针对使用 jQuery 的情况下:

$("#userName").val(378868653);

写法没问题的 还是看一下判断有没有填写的逻辑吧

这个$()是要jquery支持吧
不行就写原生的,比如:
document.querySelector('xxxxx').value='xxxx'

但是具体还要看代码里怎么写的
比如onChange的时候,会把你的input的value赋值给一个变量,程序里是判断这个变量的值,而不是你的input的dom的值就没办法拉

这个可能最后会遇到安全问题,因为模拟输入可能有一些限制,否则有安全风险。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题