javascript - 从网站调用事件 - 使用 VBA 到 Internet Explorer

标签 javascript vba ms-access internet-explorer ie-automation

我在 Microsoft Access 中使用 VBA 来实现 Internet Explorer 自动化。我已经打开了我想要的网站,但有一个输入,当在其中输入文本并按 Enter 键时,网站会尝试验证数据并根据此输入填充其他字段。

查看控件,我发现了这段代码:

      <input name="ctl00$ContentPlaceHolder1$txtId" type="text" maxlength="8" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$txtId\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;
javascript:return ValidateNumber(event);
       " id="ctl00_ContentPlaceHolder1_txtId" class="TextBox" onfocus="javascript:sObjetoOnFocusCSS(this);
       " onblur="javascript:sObjetoOnBlurCSS(this,'TextBox');" 
        style="font-weight:normal;"> 

我认为 ValidateNumber(event) 负责验证插入到此输入中的数据以填充此网站中的其他字段。

我尝试执行类似 Call document.all(ctl00$ContentPlaceHolder1$txtId).fireEvent("ValidateNumber(event)"); 的操作,但没有成功。

我可以做什么或修复什么来运行验证 ctl00$ContentPlaceHolder1$txtId 控件内数据的 ValidateNumber(event) 函数?

最佳答案

由于有一个与该元素关联的 onChange 事件,因此调度该事件应该执行它。填充输入字段后尝试一下。

Dim ie as InternetExplorerMedium
Dim ieEvent
Dim htmldoc as HTMLDocument

Set ie = 'however you're setting IE'
Set htmldoc = ie.document
Set ieEvent = htmldoc.createEvent("HTMLEvents")

ieEvent.initEvent "change", False, True
ie.document.all.Item("ctl00_ContentPlaceHolder1_txtId").dispatchEvent ieEvent

关于javascript - 从网站调用事件 - 使用 VBA 到 Internet Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50725320/

相关文章:

javascript - 如何在打开新页面后将焦点设置在弹出窗口上?

javascript - 如何在javascript中拼接数组中的项目

excel - 多维数组(1 到 #) - Lbound 显示为 0,而不是 1?

excel - 如何使用excel宏在单元格中写入工作簿名称

ms-access - 以另一种形式运行过程

java - 使用 JTextField 更新 MS Access DB 中的数据

javascript - HTTP 请求影响 URL

ms-access - 如何在私有(private)模块中创建公共(public)变量

sql - MS Access 舍入精度与 Group By

javascript - 使 material-ui v1 Button 默认为白色