0

我在 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)");但没有奏效。

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

4

2 回答 2

1

由于存在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
于 2018-08-04T23:23:08.430 回答
0

您提到的脚本与 onkeypress 事件相关联,因此您可以尝试:

htmldoc.querySelector("input[name='ctl00$ContentPlaceHolder1$txtId']").FireEvent "onkeypress"
于 2018-08-12T06:17:25.843 回答