Как отловить событие изменения <select>с помощью jQuery? - PullRequest
2 голосов
/ 10 сентября 2009
<select id="target">
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
</select>

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

Ответы [ 6 ]

12 голосов
/ 10 сентября 2009
$('#target').change( function() {
   $(this).find(":selected").each(function () {
            console.log( $(this).val() );
    });
 });
5 голосов
/ 10 сентября 2009
$("#target").change( function() {
    alert($("#target option:selected").val());
});

Вам также может понадобиться учитывать это, если человек не меняет опцию, а просто щелкает по раскрывающемуся списку и выбирает тот же элемент:

$("#target option").click( function() {
     alert($("#target option:selected").val());
});
2 голосов
/ 10 сентября 2009
$("#target").change( function() {
  var selectedOption = $("#target option:selected");
  var selectedValue = selectedOption.val();  // gets the selected value
  var selectedText = selectedOption.text();  // gets the selected text
});
1 голос
/ 11 мая 2011

Принятый ответ в порядке, но не улавливает изменения, сделанные нажатием клавиши (клавиши со стрелками или буквенные клавиши).

Это лучшее приложение:

$('#target').bind("change keyup",function() {
   $(this).find(":selected").each(function () {
     // do something amazing here
   });
});
0 голосов
/ 16 сентября 2016

Используя функцию стрелки, это может быть:

$('#target').change((e) =>{
        console.log(e.currentTarget.value);
        console.log(e.currentTarget.textContent);
 });

Замена this на event.currentTarget.

0 голосов
/ 10 сентября 2009

Вы можете получить выбранное значение и текст просто:

$("#target").change(function() {
  var selectedValue = $(this).val(),
      selectedText = $('option:selected', this).text();
  // ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...