Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   выбор select из JS (https://javascript.ru/forum/misc/85802-vybor-select-iz-js.html)

od0201 20.03.2024 12:33

выбор select из JS
 
Доброе время суток

Есть select который нужно изменить

Выполняю код, визуально изменяется, но при сохранении изменения не применяются.

Как мне имитировать выбор

Всем спасибо

document.querySelectorAll(".esc .input-wrapper select")[4].value=2
или
document.querySelectorAll(".esc .input-wrapper select")[4].getElementsByTagName('option')[2].selected=true;

рони 20.03.2024 13:18

Цитата:

Сообщение от od0201
но при сохранении изменения не применяются.

???

voraa 20.03.2024 13:38

Цитата:

Сообщение от od0201
но при сохранении изменения не применяются.

Что и куда сохраняется?

od0201 20.03.2024 22:00

не суть куда, в моем случаи через порт в микроконтролер

нашел пример, на сайте
https://esc-configurator.com/
есть кнопка "Open Melody Editor" если нажать то будет "окно" в котором есть select, если его менять ручками, есть эфект.
програмно, например
document.querySelector(".input-wrapper select").value='preset-2Pac - Hit Em Up'

Селект меняется, но эфекта нет.

направьте в нужное русло (как я понимаю, это React)

roland 20.03.2024 22:29

od0201, вероятно, "эффект", о котором Вы говорите, происходит в обработчике события "change", которое не генерируется при программном изменении значения элемента "select". Попробуйте после изменения значения генерировать событие "change" программно:
select.value = option.value
const event = new Event('change', { bubbles: true })
select.dispatchEvent(event)

od0201 24.03.2024 13:09

roland,
спасибо, то что нужно.

od0201 28.03.2024 12:00

добрый день
есть еще одна проблема с вводом в input
я даже класс меняю, но данные не сохраняются
визуально все ок
const qwewqe=()=>{
  let timePause=200
  const phrase=document.querySelector('input#phrase')
  phrase.value='234'
  phrase.classList.remove('mui--is-untouched')
  phrase.classList.add('mui--is-touched')
  const event= new Event('change', { bubbles: true })
  phrase.dispatchEvent(event)
}


{/* <input type="text" id="phrase" name="phrase" placeholder="Binding Phrase" class="mui--is-untouched mui--is-dirty mui--is-not-empty"></input> */}
{/* <input type="text" id="phrase" name="phrase" placeholder="Binding Phrase" class="mui--is-dirty mui--is-not-empty mui--is-touched"></input> */}

voraa 28.03.2024 12:17

Все равно хотелось бы знать, как именно должны сохраняться данные. И в какой момент.

roland 28.03.2024 15:13

od0201, для элемента "input" для обработки каждого введённого символа вероятно используется событие "input". Попробуйте заменить событие "change" на "input" в строке:
const event= new Event('change', { bubbles: true })

od0201 28.03.2024 18:12

roland,
input тоже не работает

od0201 28.03.2024 18:18

voraa,
:)

подаем на ELRS 5 вольт, она создает вайфай сеть в которой по http://10.0.0.1/ открываются настройки этой самой ELRS, после ввода phrase она должно сохраниться на этом устройстве

даже если я только програмно ввожу в инпут, я в нем вижу то что мне нужно, а потом руками наживаю "сохранить" мой фраза не сохраняется в ELRS. Если все это делать "руками", то все ок

roland 28.03.2024 19:48

od0201, тогда Вам нужно смотреть на элемент "сохранить" и что он из себя представляет. Это ссылка? Это кнопка? Или это элемент "input" с типом "submit", который находится вместе с текстовым полем в форме (элемент form) и генерирует событие "submit" после нажатия?

Вам это проще будет проверить самому через DevTools (F12 в браузере) и посмотреть там же навешанные обработчики, чем нам, читателям, строить предположения.

od0201 30.03.2024 22:24

roland,
добрый вечер, F12 помогла, все заработало через 'change', это я недосмотрел, спасибо


Часовой пояс GMT +3, время: 05:50.