Как я могу использовать JS для заполнения простого поля ввода, когда кажется, что «.value = ***» не распознается?

Каждый день у меня есть трекер шагов «здоровье и фитнес», который нужно вводить на работе. Я пытаюсь использовать TamperMonkey для автоматизации большей части этого. Однако у меня возникли проблемы с получением поля ввода для проверки моего «значения».

Как я могу использовать JS для заполнения простого поля ввода, когда кажется, что «.value = ***» не распознается?

Выполняю консольную команду:

document.getElementById("self-enter-steps-input").value = 3000;

который дает:

Как я могу использовать JS для заполнения простого поля ввода, когда кажется, что «.value = ***» не распознается?

Однако, когда я нажимаю «Сохранить» вручную, я получаю следующую ошибку:

Как я могу использовать JS для заполнения простого поля ввода, когда кажется, что «.value = ***» не распознается?

Если я программно нажму «Сохранить», окно закроется, но номер не зарегистрируется. Если я нажму «возврат» или наберу дополнительный «0» вручную, все поле будет проверено, и оно сохранит все значение, если я нажму «Отправить».

Я также пытался ввести значение в виде строки, т.е.

document.getElementById("self-enter-steps-input").value = "3000";

Поле проверяется, но значение не записывается. Однако простой возврат или дополнительное число, введенное вручную, создает запись всего поля.

Я безуспешно пытался смоделировать события «нажатия клавиши». Я новичок в JS, поэтому любая помощь приветствуется.

Вы проверили правильность идентификатора? JS чувствителен к регистру

Sathish Chelladurai 20.05.2019 16:05

@SathishChelladurai Почему еще вы видите «3000» в поле ввода?

connexo 20.05.2019 16:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
207
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, поле проверяется на определенное событие, например change. Попробуйте запустить его после установки значения

var inputElement = document.getElementById("self-enter-steps-input");
var e = document.createEvent('HTMLEvents');

inputElement.value = 3000;

e.initEvent('change', false, true);
inputElement.dispatchEvent(e);
Ответ принят как подходящий

Возможно, вам потребуется запустить прослушиватель изменений вручную, отправив событие change вручную:

const steps = document.getElementById("self-enter-steps-input");
steps.value = "3000";
const change = new InputEvent('change', { bubbles: true });
steps.dispatchEvent(change);

Судя по всему, проверка ввода происходит либо на change, blur (или, альтернативно, на focusout, потому что blur не будет всплывать), либо на input. Пожалуйста, проверьте свои инструменты разработчика, какое событие действительно прослушивается, и соответствующим образом скорректируйте код, который я дал.

Оба ответа были правильными, мне нужно было отправить событие «изменить».

RBuntu 20.05.2019 18:26

Другие вопросы по теме