jQuery - обработчик событий, чтобы определить, была ли выбрана опция HTML select - PullRequest
7 голосов
/ 23 августа 2011

Как я могу определить в jQuery, когда какая-либо опция в теге select была изменена?

Например, [псевдокод]:

event handler function -> option changed(){      
  //do some stuff
}

EDIT:

У меня есть следующий выбор:

<select id = "selectattribute">
  <OPTION VALUE="0">Choose Attribute</OPTION>
  <?php echo($options);?>
</select>

Я пытаюсь это сделать в jQuery:

$(document).ready(function() {
  $("#selectattribute").change(function() {
     alert('Handler for .change() called.');
  });
});

Ничего не происходит ... функция не запускается.

РЕДАКТИРОВАТЬ: работает, когда я использую $("#select") вместо $("#selectattribute")...can you not apply it to particular select tags?

Ответы [ 6 ]

8 голосов
/ 23 августа 2011

Из Документы jQuery относительно обработчика изменений :

<form>
  <input class="target" type="text" value="Field 1" />
  <select class="target">
    <option value="option1" selected="selected">Option 1</option>
    <option value="option2">Option 2</option>
  </select>
</form>
<div id="other">
  Trigger the handler
</div>

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

$('.target').change(function() {
  alert('Handler for .change() called.');
});
2 голосов
/ 23 августа 2011

Ваш код работает в Firefox с помощью мыши, см. эту скрипку .

Однако использование клавиатуры - это другое дело согласно этому сообщению об ошибке

Чтобы обойти это, я добавил обработчик ключей вверх, чтобы убрать фокус с элемента, а затем перефокусировать, согласно этой скрипке

Если событие изменения не запускается при использовании мыши, проверьте параметры, отображаемые вашим php-кодом. Ищите структуры, которые могут «ломать» тег выбора.

1 голос
/ 23 августа 2011
$("select").change(function() {})
0 голосов
/ 31 октября 2013

Похоже, ваш JQuery не загружен, сначала проверьте, что он загружен

    //case if mini jQueryis not used replace with window.jQuery
    if (window.$) {
    console.debug('jQuery is loaded ');
    } else {
    console.debug('jQuery is not loaded ');
    }
0 голосов
/ 23 августа 2011

Возможно, есть еще один тег, идентификатор которого называется «selectattribute». Идентификатор тега должен быть уникальным. Если идентификатора несколько, jQuery будет использовать первый найденный.

0 голосов
/ 23 августа 2011

Попробуйте связать:

  $("#selectattribute").bind('change', function() {
     alert('Handler for .change() called.');
  });

или изменить функцию в jQUery:

  $("#selectattribute").change(
     function() {
        alert('Handler for .change() called.');
     }
  ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...