JQuery выбрать опцию обработчик кликов - PullRequest
51 голосов
/ 22 апреля 2011

Дано:

<select id="mySelect">
  <option>..</option>
  ...
</select>

Как использовать идентификатор выбора, как я могу вызвать событие щелчка по одному из параметров? Я пытался прикрепить событие непосредственно к выбору, но это вызывает событие всякий раз, когда выбирается выбор (даже если нет опций). О, и это множественный выбор (хотя я не думаю, что это имеет значение).

Ответы [ 5 ]

66 голосов
/ 22 апреля 2011

Вы хотите обработчик события 'change' вместо 'click'.

$('#mySelect').change(function(){ 
    var value = $(this).val();
});
31 голосов
/ 19 февраля 2015

$('#mySelect').on('change', function() {
  var value = $(this).val();
  alert(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select id="mySelect">
  <option value='1'>1</option>
  <option value='2'>2</option>
  <option value='3'>3</option>
  <option value='4'>4</option>
  <option value='5'>5</option>
  <option value='6'>6</option>
  <option value='7'>7</option>
  <option value='8'>8</option>
</select>

ПРИМЕР

1 голос
/ 10 июня 2013

Вы можете прикрепить событие фокуса, чтобы выбрать

$('#select_id').focus(function() {
    console.log('Handler for .focus() called.');
});
0 голосов
/ 24 июня 2014

Одним из возможных решений является добавление класса к каждой опции

<select name="export_type" id="export_type">
    <option class="export_option" value="pdf">PDF</option>
    <option class="export_option" value="xlsx">Excel</option>
    <option class="export_option" value="docx">DocX</option>
</select>

, а затем используйте обработчик щелчка для этого класса

$(document).ready(function () {

    $(".export_option").click(function (e) {
        //alert('click');
    });

});

ОБНОВЛЕНИЕ: похоже, что код работает в FF, IE и Opera, но не в Chrome. Глядя на спецификации http://www.w3.org/TR/html401/interact/forms.html#h-17.6 Я бы сказал, что это ошибка в Chrome.

0 голосов
/ 23 апреля 2013

Что я сделал в этой ситуации, так это добавил событие OnClick элементов option следующим образом:

<option onClick="something();">Option Name</option>

Затем просто создайте функцию сценария, подобную этой:

function something(){
    alert("Hello"); 
    }

ОБНОВЛЕНИЕ: К сожалению, я не могу комментировать, поэтому я обновляю здесь
TrueBlueAussie , по-видимому, jsfiddle возникают некоторые проблемы, проверьте здесь, работает или нет: http://js.do/code/klm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...