javascript - 如何以编程方式填写 Microsoft Office Forms 表单?

标签 javascript jquery microsoft-forms

我的公司有一个 Microsoft 表单,我每个月要填写大约 10 次,但我输入的实际表单数据并没有太大变化。对于不改变的字段,我希望能够以编程方式填写它,可能使用 javascript。使用“用户 Javascript 和 CSS”chrome 扩展,我已经注入(inject)了 javascript 以在页面上放置一个按钮,我可以单击以填写它,但是当我单击“提交”时,表单没有检测到这些字段已被填充。
这是一个示例表单:
https://forms.office.com/Pages/ResponsePage.aspx?id=A2isORETDk26ciZZHMzhJJh3e-CRp49LqjxXVoNyf99UQVZZTkdHS0ZVTkJHSDg5RE1VNkZDWVJPRS4u
这是填写文本框的一点jquery

$('#form-container > div > div > div.office-form-content.office-form-page-padding > div > div.office-form.office-form-theme-shadow > div.office-form-body > div:nth-child(2) > div:nth-child(2) > div.office-form-question-content.office-form-theme-focus-border > div.office-form-question-element > div > div > div > input')[0].value = "hello"
请注意,当您单击“提交”时,该字段变为空白并收到验证错误。
如何以通过表单接收数据的方式以编程方式填充这些字段?

最佳答案

您需要检查哪些事件监听器具有您要填充的输入。您可以通过访问浏览器开发人员工具 (F12) 来执行此操作。
转到“元素”选项卡并选择输入。您将看到具有“事件监听器”选项卡的右侧或下方部分。在这里,您必须禁用显示祖先事件监听器的选项。
Event listener of a radio button
正如您在图像上看到的, radio 类型输入具有“更改”事件。
您只需要在填写完输入后发送相应的事件,如下所示:

const input = document.getElementsByClassName("Element selector");
const changeEvent = new Event("change"); //Create the event
input.checked = true; //Change input value
input.dispatchEvent(changeEvent); //Dispatch event
在文本输入的情况下,您需要像这样发送一个“输入”事件:
const input = document.getElementsByClassName("Element selector");
const inputEvent = new Event("input"); //Create the event
input.value = "New value"; //Change input value
input.dispatchEvent(inputEvent); //Dispatch event

关于javascript - 如何以编程方式填写 Microsoft Office Forms 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63427386/

相关文章:

javascript - 想要在单击元素时向该元素添加 CSS 类

javascript - Cors 安全性与 cookie

javascript - 无法运行 MQTT JavaScript 客户端

javascript - 在 IE 中禁用输入文本框的粘贴(Control V)

asp.net-mvc-3 - 发布一个无法与 DefaultModelBinder 一起使用的 Javascript 数组?

javascript - 如何获取html元素的class标签

python - 调用 MS Graph API 收集在线 MS 表单响应

JavaScript 总是在总行数上加 1