我在 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/