Как заставить кнопку отправки появляться при копировании / вставке из Excel на веб-страницу IE с использованием VBA? - PullRequest
0 голосов
/ 04 июля 2019

Итак, вот проблема. Я настроил свой код, чтобы скопировать / вставить некоторые данные из Excel в текстовое поле веб-сайта. Тем не менее, я просто хочу написать код, нажав кнопку отправки. Тем не менее, кнопка отправки остается серой, если я вручную не записываю что-то в текстовое поле или вставляю что-то вручную. Мой код фактически вводится в данные в текстовом поле, но кнопка отправки все еще остается серой и поэтому я не могу нажать на нее.

Вот HTML-код до и после того, как что-то было записано в текстовое поле, в результате чего кнопка отправки была либо щелкающей, либо не нажимаемой.

<div class="form-group has-error">

<div class="form-group">

Вот полный HTML-код для кнопки:

<button disabled="" class="pull-right report-module-query-list-execute-button btn btn-sm btn-default" type="button"><span>Print</span></button>

Эта часть HTML-кода предназначена для текстового поля, но этот код изменяется для включения кнопки.

<div class="form-group has-error">
<label class="col-sm-4 col-sm-offset-1 control-label" for="TaskStateHistoryPivot_1"><span>Search data in</span></label>
<div class="col-sm-7">
<div class="col-sm-12">
<textarea class="report-module-query-execution-freeform-area" rows="5"></textarea></div></div></div>

Есть идеи?

1 Ответ

0 голосов
/ 05 июля 2019

Исходя из вашего кода и описания, я полагаю, что вы проверяете TextBox, а затем добавляете стиль CSS к кнопке div или submit и используете его для включения / выключения кнопки submit.

Поскольку я не являюсьнашел метод прямого изменения стиля CSS или отключенного атрибута с помощью VBA.

В качестве обходного пути, я предлагаю вам добавить скрытую кнопку на вашем веб-сайте, а затем, в событии щелчка, вы можете проверить, является ли текстовое поле пустым, и включить / отключить кнопку отправки.После установки значения текстового поля, вы можете вызвать эту кнопку и проверить значение текстового поля и включить / отключить кнопку отправки.

код веб-страницы, как показано ниже:

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
    $(function () {
        $("#btnSubmit").prop("disabled", true);
        function validate() {
            if ($("#Text1").val() != '') {
                $("#btnSubmit").prop("disabled", false);
            }
            else {
                $("#btnSubmit").prop("disabled", true);
            }
        }
        $("#Text1").change(function () {
            validate();
        });
        $("#btnvalidte").click(function () {
            validate();
        });
    });
</script>
<div>
    <input id="Text1" type="text" value="" />
    <input id="btnvalidte" type="button" value="validate" style="display:none" />
    <input id="btnSubmit" type="button" value="Submit" />
</div>

код VBA какthis:

Sub Test()
    Dim ie As Object
    Dim Rank As Object
    Set ie = CreateObject("InternetExplorer.application")
    ie.Visible = True
    ie.Navigate ("http://localhost:54382/HtmlPage47.html")
    Do
        If ie.ReadyState = 4 Then
            Exit Do
        Else
        End If
    Loop

    Set doc = ie.document        

    'get the excel data

    Dim val As String
    val = Range("C2").Value

    'find the textbox and set the value

    doc.getElementById("Text1").Value = val

    'trigger the validate button to check whether the textbox is empty and enable the submit button

    doc.getElementById("btnvalidte").Click
End Sub

Снимок экрана: this .

Edit :

Вы можете попробовать использовать этот метод:используйте метод SendKeys для ввода значений в текстовое поле, затем нажмите кнопку Tab, чтобы активировать правило проверки.

Код, как показано ниже:

Sub Test()
    Dim ie As Object
    Dim Rank As Object
    Set ie = CreateObject("InternetExplorer.application")
    ie.Visible = True
    ie.Navigate ("http://localhost:54382/HtmlPage47.html")
    Do
        If ie.readyState = 4 Then
            Exit Do
        Else
        End If
    Loop

    Set doc = ie.document

    'get the excel data

    Dim val As String
    val = Range("C2").Value

    'find the textbox and set the value

    Set TextBoxfield = doc.getElementById("Text1")
    'set focus on the textbox.
    With TextBoxfield
        .Focus
    End With
    'enter value into the textbox.
    SendKeys CStr(val)
    'press the Tab button to change the focus and try to trigger the validation rule
    SendKeys "{TAB}"    

    While ie.Busy Or ie.readyState < 4: DoEvents: Wend
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...