如何在网页中使用VBA触发隐藏字段

How to trigger the hidden field using VBA in web Page

我在网页中使用 VBA 进行了自动数据输入,但是有一个隐藏的字段只有在 select 约会超过 1 个月时才会弹出。当我使用 VBA 输入日期时,它没有显示隐藏字段,但是当我手动输入相同的日期时,它显示隐藏字段,我需要提到一些原因。 我的 VBA 代码

IE.document.getelementbyid("ctl00_ContentPlaceHolder1_txtInvoicedt").Value = Sheet5.Range("B13").Value

网页代码

<td>Invoice Date</td>
<td><input name="ctl00$ContentPlaceHolder1$txtInvoicedt" type="text" 
   id="ctl00_ContentPlaceHolder1_txtInvoicedt" autocomplete="off"  
   onblur="lostClr(this);if(this.value!=&#39;&#39;){return 
   checkDt(this,&#39;invdt&#39;);}" onchange="check_idate()" onkeypress="return 
   false;" style="width:100px;">
   <span id="ctl00_ContentPlaceHolder1_lbldelay_reason" style="visibility: 
      hidden;">Delay Reason :</span>
   <input name="ctl00$ContentPlaceHolder1$txtdelay_reason" type="text" 
      id="ctl00_ContentPlaceHolder1_txtdelay_reason" style="visibility: hidden;">
   <span id="ctl00_ContentPlaceHolder1_lblreason" style="color: red; visibility: 
      hidden;">*Min 15 chars</span>
   <input name="ctl00$ContentPlaceHolder1$btndelay_attach" type="button"
      id="ctl00_ContentPlaceHolder1_btndelay_attach" class="button_1" style="border-style: none;
      width: 350px; visibility: hidden;" value="Attach/Upload CGM&#39;s Approval"
      onclick="return openDelay_approval()">
   <input type="hidden" name="ctl00$ContentPlaceHolder1$hdndelay_attach"
      id="ctl00_ContentPlaceHolder1_hdndelay_attach">
   <input type="hidden" name="ctl00$ContentPlaceHolder1$hdndelay_attach_id"
      id="ctl00_ContentPlaceHolder1_hdndelay_attach_id">

选择日期之前:

选择日期后:

在第一个输入的onblur事件中是否显示隐藏字段功能?如果是这样,您可以使用 fireEvent 来触发 onblur 事件。你可以参考我下面的示例。

示例 VBA 代码:

Sub LOADIE()
    Set ieA = CreateObject("InternetExplorer.Application")
    ieA.Visible = True
    ieA.navigate "https://www.example.html"
    Do Until ieA.readyState = 4
       DoEvents
    Loop
    
    Set doc = ieA.Document
    doc.getElementById("ctl00_ContentPlaceHolder1_txtInvoicedt").Value = 11
    doc.getElementById("ctl00_ContentPlaceHolder1_txtInvoicedt").fireEvent ("onblur")
End Sub

示例 HTML 页面:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <div>Invoice Date</div>
    <input name="ctl00$ContentPlaceHolder1$txtInvoicedt" type="text"
           id="ctl00_ContentPlaceHolder1_txtInvoicedt" autocomplete="off"
           onblur="check_date()" onkeypress="return false;" style="width:100px;">
    <span id="ctl00_ContentPlaceHolder1_lbldelay_reason" style="visibility: hidden;">Delay Reason:</span>
    <input name="ctl00$ContentPlaceHolder1$txtdelay_reason" type="text"
           id="ctl00_ContentPlaceHolder1_txtdelay_reason" style="visibility: hidden;">
    <script>
        function check_date() {
            var a = document.getElementById("ctl00_ContentPlaceHolder1_txtInvoicedt").value;
            if (a >= 10) {
                document.getElementById("ctl00_ContentPlaceHolder1_lbldelay_reason").style.visibility = "visible";
                document.getElementById("ctl00_ContentPlaceHolder1_txtdelay_reason").style.visibility = "visible";
            }
            else {
                document.getElementById("ctl00_ContentPlaceHolder1_lbldelay_reason").style.visibility = "hidden";
                document.getElementById("ctl00_ContentPlaceHolder1_txtdelay_reason").style.visibility = "hidden";
            }
        }
    </script>
</body>
</html>