Вызов события с веб-сайта - использование VBA для Internet Explorer - PullRequest
0 голосов
/ 06 июня 2018

Я использую VBA в Microsoft Access для автоматизации 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?

Ответы [ 2 ]

0 голосов
/ 12 августа 2018

Указанный вами скрипт связан с событием onkeypress, поэтому вы можете попробовать:

htmldoc.querySelector("input[name='ctl00$ContentPlaceHolder1$txtId']").FireEvent "onkeypress"
0 голосов
/ 05 августа 2018

Поскольку с элементом связано событие 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...