Событие Javascript для выбора элемента Select - PullRequest
4 голосов
/ 06 апреля 2010

Я ищу, чтобы найти событие Javascript, которое мне нужно поместить в функцию jQuery .bind, чтобы эта функция срабатывала при выборе элемента <select>.

В данный момент я использую .bind('change',function() { ...}), но мне нужно, чтобы событие сработало, когда выбранный вариант был выбран снова.

Есть предложения?

Ответы [ 7 ]

4 голосов
/ 16 февраля 2013

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

$('select option:selected').removeAttr('selected');

2 голосов
/ 24 сентября 2012

Это возможно, однако не полностью поддерживается. Вот образец:

HTML

<select id="selectId">
 <option value="1">A</option>
 <option value="2">B</option>
 <option value="3">C</option>
 <option value="4">D</option>
</select>

JQuery

$("#selectId>option").click(function(){
 alert(this.value);
});

вот посредственный подход к обработке, т. Е.

<div id="dropdownWrapper">
 <select id="selectId">
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
  <option value="4">D</option>
 </select>
</div>

1012 * JS *

var clickCount_guid324fF = 0;
$("#dropdownWrapper").click(function(){
    if(++clickCount_guid324fF % 2 == 0){
        alert($("#selectId").val());
        clickCount_guid324fF = 0;
    }
});
2 голосов
/ 06 апреля 2010

Изменение в полях выбора в любом случае ненадежно. Читать:

http://www.quirksmode.org/dom/events/change.html#t05

Я бы, наверное, пошел на что-нибудь щелкнуть (но будьте подозрительны, кто-то (-> IE) сделает вашу жизнь сложной). Или построить что-то самостоятельно без выбора.

0 голосов
/ 03 марта 2017

привязать событие изменения и клика

$select.bind("change click", function (event) { // do something   });
0 голосов
/ 06 апреля 2010

При повторном выборе выбранного параметра не происходит достоверного события.

Хотя в некоторых браузерах вы можете отлавливать события, происходящие из <option> (который вы можете использовать для перехвата событий щелчка и клавиатуры, если у вас хватит терпения попытаться воспроизвести обработку выбора в браузере), это не соответствует стандартам работать в IE (так как он использует собственные виджеты Windows для реализации полей выбора, которые не дают такого детального доступа).

Если вам нужно иметь возможность повторно запустить событие при повторном выборе той же опции, то, что у вас есть, на самом деле не похоже на окно выбора; возможно, его лучше заменить на скриптовый всплывающий элемент div, полный кнопок. (Существует множество скриптов, которые заменят поле выбора для скриптового div, чтобы дать вам больший контроль над браузерами, где доступен JavaScript.)

0 голосов
/ 06 апреля 2010

Я однажды сделал это, используя mouseup, и проверил, где произошло событие. Если это был элемент option, я обрабатывал выбор. Нет прослушивания onchange вообще:

<body>
<select id="select0">
    <option value="0">option 0</option>
    <option value="1">option 1</option>
    <option value="2">option 2</option>
</select>

<script type="text/javascript">
$('#select0').bind('mouseup', function (e) {
    var src = e.target;
    if (src.nodeName.toLowerCase()==='option') {
        doMagicOnSelect(this);
    }
});
function doMagicOnSelect(selectElem) {
    console.log('current value:'+selectElem.value);
}
</script>
</body>
0 голосов
/ 06 апреля 2010

Не нажмете работать? .bind('click',function() { ...})

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