Как добавить атрибут в класс с js? - PullRequest
0 голосов
/ 23 марта 2020

Поэтому я пытаюсь автоматически заполнить раздел кода скидки на странице. Класс, который я вызываю, это кнопка перед . Если я пытаюсь нажать Enter, он не применяет код, потому что значение не было сохранено. Однако при его заполнении вручную этот атрибут добавляется в класс: после ввода кода вручную . Сайт, на котором я пытаюсь применить скидку - luisaviaroma.com, вы можете попробовать код FF25, если вы хотите помочь мне с кодом. Я выяснил, что просто добавляя пробел после кода, который моя рука решает, можно ли как-нибудь автоматизировать этот пробел (внутри js)?

function test() {
    var element = document.querySelector("div[data-attribute='promo-code-input']")
    var input = document.querySelector("input[name='promo-code-input']");
    //element.setAttribute('class', 'InputText__baseCls___Hg_ik4cV2- InputText__focus___5q7tEpbHwI InputText__filled___1s5BW_63Y3');
    element.classList.add("InputText__filled___1s5BW_63Y3");
    console.log(element)
    input.focus();
    setTimeout(function () {
        input.focus();
        input.value='FF25';
        let event = document.createEvent("HTMLEvents");
        event.initEvent('change', true, false);
        element.dispatchEvent(event);
        element.blur();
    }, 300)
    input.select();

1 Ответ

0 голосов
/ 23 марта 2020

Хотя существует KeyboardEvent, spe c рекомендует input для ввода текста.

В этом случае установка атрибута bubbles на true делает свое дело.

function test(val) {
    var input = document.querySelector("input[name='promo-code-input']");
    var inputEvent = new Event('input', {
           bubbles: true,
         })

    input.focus();
    input.value = val;
    input.dispatchEvent(inputEvent)

    console.log(input)

 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...