Функция onChange не вызывается для выпадающего меню - PullRequest
0 голосов
/ 03 июля 2019

У меня есть кнопка , которая при нажатии сбрасывает раскрывающееся меню до значения по умолчанию.

У меня есть прослушиватель событий onchange для раскрывающегося меню.Слушатель событий не запускается, когда я нажимаю кнопку.

HTML CODE

<select id="my_select">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>
<div id="reset">reset</div>
$("#reset").on("click", function () {
document.getElementById('my_select').selectedIndex = 0;
});
$("#my_select").change(function(){
alert("Hi");
});

Приведенный выше код изменения не срабатывает при нажатии кнопки x, когда он получаетсрабатывает при изменении вручную.Я ожидаю, что это будет работать для document.getElementById ('Typess'). SelectedIndex = 1;также.Как заставить это работать?

Ответы [ 4 ]

2 голосов
/ 03 июля 2019

Это событие change вызвано тем, что пользователь внес изменения в этот элемент.

Альтернативой может быть ручное инициирование этого события следующим образом:

let $typess = $("#Typess")
$(".x").click(function(event) {
  document.getElementById('Typess').selectedIndex = 1;
  $typess.trigger("change");
})

$typess.on('change', function(event) {
  console.log("Changed");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="Typess">
<option>A</option>
<option>B</option>
</select>
<p>
<button class="x">Click me!</button>
0 голосов
/ 03 июля 2019

Событие смены триггера

$("#reset").on("click", function () {
document.getElementById('my_select').selectedIndex = 0;
$("#my_select").change()
});
0 голосов
/ 03 июля 2019

Попробуйте реализовать ваше change событие в click one:

$("#reset").on("click", function () {
document.getElementById('my_select').selectedIndex = 0;

  $("#my_select").change(function(){
  alert("Hi");
  });
});
0 голосов
/ 03 июля 2019

попробуйте это:

    $(".x").click(function(event){
    // alert(" x is clicked") (This alert is working)
     document.getElementById('Typess').val(1);
    })

Также убедитесь, что вы изменили значение, а не пытаетесь установить то же значение

...