Метод вызывается в виджете счетчика перед инициализацией в скрипте содержимого - PullRequest
0 голосов
/ 03 октября 2019

Я пишу скрипт для контента для заполнения формы. Веб-сайт, на котором я пытаюсь сделать это, использует виджет jquery spinner для одного из значений. Используя консоль Chrome и вручную выполняя каждую команду, все это прекрасно работает. Однако, когда я пытаюсь запустить скрипт, я получаю эту ошибку:

Uncaught Error: cannot call methods on spinner prior to initialization; attempted to call method 'value'
    at Function.error (jquery.js:253)
    at HTMLInputElement.<anonymous> (jquery-ui.min.js:6)
    at Function.each (jquery.js:370)
    at jQuery.fn.init.each (jquery.js:137)
    at jQuery.fn.init.t.fn.<computed> [as spinner] (jquery-ui.min.js:6)
    at myScript.js:96

Первой моей мыслью было, что я вызываю метод слишком рано, но время ожидания не работает.

HTML:

<div class="spinbox">
    <div class="title">...<div>
    <div class="inputs" style="height: 49px;">
        <input type="tel" id="input-ID" data-win-bind="disabled: AmountSpinnerEnabled Converters.not" aria-valuemin="0.5" aria-valuemax="4750" class="ui-spinner-input" autocomplete="off" role="spinbutton" aria-valuenow="100">
        <button class="icon-plus ui-spinner-button ui-spinner-up ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button">...</button>
        <button class="icon-minus ui-spinner-button ui-spinner-down ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button">...</button>
    </div>
</div>

Код:

if(window.location.href == "website.com") {
    $( window ).on('load', function(){
        var x = 100
        var y = 200

        document.getElementsByClassName("dropdown")[1].click();
        setTimeout(function () {
            console.log("set amount")
            $("#input-ID").spinner("value", x);
            setTimeout(function () {
                document.getElementById("checkbox").click()
            }, 2000);
        }, 2000);
    }
}

Я работал над этим, выбирая элементыи нажимая кнопки / ввод значений в консоли Chrome, а затем добавляя команду в мой скрипт. Это работало хорошо, пока я не дошел до этой точки. У меня сложилось впечатление, что при $( window ).on("load") спиннер уже был бы инициализирован. Когда спиннер инициализируется, чтобы я мог установить для него определенное значение?

Редактировать: Я могу выполнить команду $("#input-ID").spinner("value", x); вручную, прежде чем скрипт сможет это сделатьи работает нормально. Есть ли какой-то способ, которым мой сценарий не может достичь инициализированного счетчика, но обычная консоль Chrome может?

...