Как показать модальный ящик при выборе варианта выбора с помощью jQuery? [dубликат]

У меня есть форма ввода, которая позволяет мне выбирать из нескольких опций и делать что-то, когда пользователь меняет выбор. Например,

<select onChange="javascript:doSomething();">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Теперь doSomething() запускается только тогда, когда выбор изменяется .

Я хочу вызвать doSomething(), когда пользователь выбирает любой вариант, возможно, тот же самый.

Я попытался использовать обработчик onClick, но он запускается до того, как пользователь запустит процесс выбора.

Итак, есть ли способ запуска функции при каждом выборе пользователем?

Обновление:

Ответ, предложенный Даррилом, как представляется, работал, но он не работает последовательно. Иногда событие запускается, как только пользователь щелкает раскрывающееся меню, даже до того, как пользователь завершит процесс выбора!

163
задан 25 January 2017 в 04:21

28 ответов

Мне нужно что-то точно такое же. Это помогло мне:

<select onchange="doSomething();" onfocus="this.selectedIndex = -1;">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Поддерживает это:

, когда пользователь выбирает любую опцию, возможно одну и ту же снова
48
ответ дан 15 August 2018 в 15:35
  • 1
    Работал отлично на firefox, но не на хроме или ie10 – awesomo 18 April 2013 в 05:24
  • 2
    jsfiddle.net/ecmanaut/335XK работает в osx Chrome 30, Safari 6, Firefox 17. – ecmanaut 12 October 2013 в 01:31
  • 3
    Также работает в Win8 IE10, Win7 IE9, Win7 IE8, WinXP IE7 и IE6. Jsfiddle или IE shenanigans заставляют вас использовать fiddle.jshell.net/ecmanaut/335XK/show/light непосредственно для просто-теста, хотя - их просмотр редактора не загружает jQuery, используемый в примере для читаемость. Все выше, только что протестированное с взаимодействием с мышью; для того, чтобы получить эту клавиатуру, этот хак, вероятно, потребует дополнительной работы, так как по крайней мере старые IE с радостью запускают событие изменения, прежде чем у вас будет возможность выбрать «C». – ecmanaut 12 October 2013 в 02:00
  • 4
    Действительно большой отзыв. помогли мне решить неспособность выбрать первый вариант – naoru 8 February 2014 в 03:13
  • 5
    Если значение уже выбрано, то табуляция через это вызовет проблемы. Как только поле будет перемещено до значения, оно исчезнет, ​​что является довольно неожиданным поведением пользователя. Кроме того, когда вы отключаетесь, вы потеряете выделение, даже если вы ничего не сделали. В противном случае, хорошие идеи. – KyleMit 1 May 2014 в 01:34

как изменить значение выбора, когда элемент получает фокус, например (с помощью jquery):

$("#locationtype").focus(function() {
    $("#locationtype").val('');
});

$("#locationtype").change(function() {
    if($("#locationtype").val() == 1) {
        $(".bd #mapphp").addClass('show');
        $("#invoerform").addClass('hide');
    }
    if($("#locationtype").val() == 2) {
        $(".lat").val('');
        $(".lon").val('');
    }
});
-1
ответ дан 15 August 2018 в 15:35

Вот мое решение, совершенно другое в этом отношении. Он использует положение мыши, чтобы выяснить, был ли нажат какой-либо вариант, если вы не хотите щелкнуть по полю выбора, чтобы открыть раскрывающийся список. Он использует позицию event.screenY, поскольку это единственная надежная переменная перекрестного браузера. Сначала необходимо привязать событие наведения, чтобы он мог определить позицию элемента управления относительно экрана перед событием клика.

var select = $("select");

var screenDif = 0;
select.bind("hover", function (e) {
    screenDif = e.screenY - e.clientY;
});
select.bind("click", function (e) {
    var element = $(e.target);
    var eventHorizon = screenDif + element.offset().top + element.height() - $(window).scrollTop();
    if (e.screenY > eventHorizon)
        alert("option clicked");
});

Вот мой jsFiddle http://jsfiddle.net/sU7EV/4 /

1
ответ дан 15 August 2018 в 15:35
  • 1
    Не работает в Safari или Chrome для OS X. Предупреждение никогда не запускается. – skot 15 June 2015 в 23:40

Что работает для меня:

<select id='myID' onchange='doSomething();'>
    <option value='0' selected> Select Option </option>
    <option value='1' onclick='if (!document.getElementById("myID").onchange()) doSomething();' > A </option>
    <option value='2' onclick='if (!document.getElementById("myID").onchange()) doSomething();' > B </option>
</select>

Таким образом, onchange вызывает «doSomething ()» при изменении параметра и onclick вызывает «doSomething ()», когда событие onchange является ложным, в другом слова, когда вы выбираете ту же опцию

1
ответ дан 15 August 2018 в 15:35

На самом деле, события onclick НЕ запускаются, когда пользователь использует клавиатуру для изменения выбора в элементе управления select. Возможно, вам придется использовать комбинацию onChange и onClick, чтобы получить поведение, которое вы ищете.

3
ответ дан 15 August 2018 в 15:35
  • 1
    Да, мне нужно ... но проблема, с которой я столкнулась, является отдельной, ортогональной той проблеме, которую вы поднимаете. Событие onclick в & lt; option & gt; запускается даже до того, как пользователь выполнит свой выбор, что, по-видимому, делает невозможным использование. – ePharaoh 8 April 2009 в 10:34
  • 2
    Событие загорается в Chrome, когда вы нажимаете кнопку ввода, после того как вы переместили выделение на новый элемент – Gene Golovchinsky 18 June 2011 в 03:11

Уже давно, но в ответ на исходный вопрос, поможет ли это? Просто поместите onClick в строку SELECT. Затем поставьте то, что вы хотите, чтобы каждый OPTION выполнял в строках OPTION. т.е.:

<SELECT name="your name" onClick>
<option value ="Kilometres" onClick="YourFunction()">Kilometres
-------
-------
</SELECT>
0
ответ дан 15 August 2018 в 15:35

У меня была такая же проблема, когда я создавал дизайн несколько месяцев назад. Решение, которое я нашел, состояло в том, чтобы использовать .live("change", function()) в комбинации с .blur() на используемом вами элементе.

Если вы хотите, чтобы он что-то делал, когда пользователь просто щелкает, вместо изменения просто замените change на click.

Я назначил свой раскрывающийся список ID, selected и использовал следующее:

$(function () {
    $("#selected").live("change", function () {

    // do whatever you need to do

    // you want the element to lose focus immediately
    // this is key to get this working.
    $('#selected').blur();
    });
});

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

http://api.jquery.com/live/

Изменить: используйте кнопку on в отличие от .live. См. JQuery .on ()

11
ответ дан 15 August 2018 в 15:35
  • 1
    благодаря! .blur () помогает. В IE7 событие изменения jQuery запускается дважды, если в коде нет .blur (). – draw 11 April 2012 в 01:15
  • 2
    Как это помогает с проблемой, выраженной в вопросе, т. Е. Что ничего не происходит до тех пор, пока выбор не изменится ? – LarsH 11 September 2012 в 06:47
  • 3
    @LarsH прошло уже несколько лет с этого вопроса, не уверен - я, возможно, неправильно прочитал этот вопрос и был сбит с толку. – Cody 19 December 2015 в 03:14

Просто идея, но можно ли поместить onclick на каждый из элементов <option>?

<select>
  <option onclick="doSomething(this);">A</option>
  <option onclick="doSomething(this);">B</option>
  <option onclick="doSomething(this);">C</option>
</select>

Другим вариантом может быть использование onblur на Выбрать. Это будет срабатывать в любое время, когда пользователь нажимает кнопку выбора. На этом этапе вы можете определить, какой вариант был выбран. Чтобы иметь этот триггер в правильное время, onclick опции может размыть поле (сделать что-то еще активным или просто .blur () в jQuery).

10
ответ дан 15 August 2018 в 15:35
  • 1
    штопать! «Почему я не подумал об этом» момент. Благодаря! – ePharaoh 15 March 2009 в 08:20
  • 2
    @ Darryl Это на самом деле не работает должным образом. Иногда событие запускается еще до того, как пользователь завершит выбор. См. Обновление, которое я добавил к вопросу. – ePharaoh 8 April 2009 в 10:30
  • 3
    Включение обработчиков событий в параметры не будет выполняться во всех версиях IE! [D0] webbugtrack.blogspot.com/2007/11/&hellip – scunliffe 24 July 2009 в 18:14
  • 4
    терпит неудачу в хроме тоже :) – thinklinux 5 July 2011 в 03:42

Что я сделал, столкнувшись с аналогичной проблемой, я добавил «onFocus» в поле выбора, которое добавляет новый общий параметр («выберите вариант» или что-то подобное), и по умолчанию он выбран в качестве выбранного параметра.

2
ответ дан 15 August 2018 в 15:35

Это не может напрямую ответить на ваш вопрос, но эта проблема может быть решена с помощью простых настроек уровня дизайна. Я понимаю, что это не может быть 100% применимо ко всем случаям использования, но я настоятельно рекомендую вам подумать о том, как пересмотреть ваш поток пользователей вашего приложения и если будет реализовано следующее дизайнерское предложение.

Я решил сделать что-то простое, чем взломать альтернативы для onChange(), используя другие события, которые на самом деле не были предназначены для этой цели (blur, click и т. д.)

Как я решил это:

Просто предварительно отложите тег опции-заполнителя, такой как select, который не имеет для него значения.

Итак, вместо использования следующей структуры, для которой требуются альтернативы hack-y:

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Подумайте об этом:

<select>
  <option selected="selected">Select...</option>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Таким образом, ваш код LOT более упрощен, а onChange будет работать как ожидалось, каждый раз, когда пользователь решает выбрать что-то кроме значения по умолчанию. Вы даже можете добавить атрибут disabled к первому варианту, если вы не хотите, чтобы они снова выбирали его и заставляли выбирать что-то из параметров, тем самым запуская огонь onChange().

At время этого ответа, я пишу сложное приложение Vue, и я обнаружил, что этот выбор дизайна значительно упростил мой код. Я потратил несколько часов на эту проблему, прежде чем уладил это решение, и мне не пришлось переписывать много кода. Однако, если бы я пошел с взломанными альтернативами, мне пришлось бы учитывать случаи краев, чтобы избежать двойного запуска запросов ajax и т. Д. Это также не испортит поведение браузера по умолчанию в качестве приятного бонуса (тестировалось на мобильных устройствах браузерами).

Иногда вам просто нужно сделать шаг назад и подумать о большой картине для простейшего решения.

0
ответ дан 15 August 2018 в 15:35

Вот простейший способ:

<select name="ab" onchange="if (this.selectedIndex) doSomething();">
    <option value="-1">--</option>
    <option value="1">option 1</option> 
    <option value="2">option 2</option>
    <option value="3">option 3</option>
</select>

Работает как с выбором мыши, так и с клавиатурой Клавиши «Вверх» / «Вниз», когда выбран фокус.

72
ответ дан 15 August 2018 в 15:35
  • 1
    Но это ничего не сделает ", когда пользователь выбирает ... тот же самый снова, & quot; правильно? – LarsH 11 September 2012 в 02:48
  • 2
    Обратите внимание, что комментарий от @KayZhu только наполовину правильный: правильная вещь - проверить, что & quot; selectedIndex & quot; больше или равно нулю (или больше -1). Нет типа & quot; type () & quot; функции и "selectedIndex" никогда не будет undefined. – Pointy 29 July 2013 в 21:47
  • 3
    @ T.J.Crowder Вы правы - не уверен, что я думал, когда писал вторую половину. Я удалил исходный комментарий и с целью не путать других, вот исходный комментарий (обратите внимание, что первая половина верна, а вторая часть неверна): Это не будет работать так, как ожидалось для первая опция, которая имеет индекс 0: 0, является ложной в JS, поэтому doSomething () не будет выполняться. Вместо этого используйте if(type(this.selectedIndex) != undefined; doSomething() – K Z 30 July 2013 в 01:49
  • 4
    Этот ответ имеет самые высокие показатели, но он не решает проблему! Функция doSomething() не запускается, когда пользователь выбирает уже выбранную опцию. См. Этот plunk , где цвет фона изменяется только в том случае, если вы выбрали опцию по-другому , чем выбранная в данный момент. – skot 15 June 2015 в 17:10
  • 5
    FWIW: Если вы хотите только вызывать doSomething(), когда выбран один конкретный параметр, например «опция 3», в приведенном выше примере используют if (this.selectedIndex==4), в котором число "4" представляет числовой индекс опций, НЕ указанный value! (то есть «вариант 3» является четвертым вариантом <select name="ab">). – user1092247 27 March 2017 в 01:21

Чтобы правильно запускать событие каждый раз, когда пользователь выбирает что-либо (даже тот же параметр), вам просто нужно обмануть поле выбора.

Как и другие, укажите отрицательный selectedIndex на фокус для принудительного изменения события изменения. Хотя это позволяет вам обмануть поле выбора, после этого он не будет работать, пока он все еще имеет фокус.

Стандартный JS / HTML:

<select onchange="myCallback();" onfocus="this.selectedIndex=-1;this.blur();">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Плагин jQuery:

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

<script type="text/javascript">
    $.fn.alwaysChange = function(callback) {
        return this.each(function(){
            var elem = this;
            var $this = $(this);

            $this.change(function(){
                if(callback) callback($this.val());
            }).focus(function(){
                elem.selectedIndex = -1;
                elem.blur();
            });
        });
    }


    $('select').alwaysChange(function(val){
        // Optional change event callback,
        //    shorthand for $('select').alwaysChange().change(function(){});
    });
</script>

Здесь вы можете увидеть рабочую демонстрацию.

4
ответ дан 15 August 2018 в 15:35
  • 1
    Это работает с Chrome, но не с IE9: когда я нажимаю на элемент управления, его текст исчезает, и он не выпадает. – ChrisW 29 September 2013 в 23:36
  • 2
    Проблема заключается в том, что он блокирует текущий выбор. Если текущий выбор - B, и я нажимаю на раскрывающийся список, галочка появляется рядом с A! Но A на самом деле не выбран, потому что, если я соскользнул из меню и отпустил кнопку мыши (прервал меню), выбор исчезнет. Выбор также пуст, если вы нажмете на раскрывающееся меню, которое вы можете легко сделать, если вы переходите к какой-либо другой части формы, не ожидая каких-либо повреждений на этом пути. (Нажмите вкладку на вашем jsfiddle, и вы поймете, что я имею в виду.) – skot 15 June 2015 в 23:48
<script>
function abc(selectedguy) {
alert(selectedguy);
}
</script>

<select onchange="abc(this.selectedIndex);">
<option>option one</option>
<option>option two</option>
</select>

Здесь вы возвращаете индекс, а в коде js вы можете использовать этот возврат с одним коммутатором или любым другим.

1
ответ дан 15 August 2018 в 15:35

использовать jquery:

<select class="target">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

<script>
    $('.target').change(function() { doSomething(); });
</script>
0
ответ дан 15 August 2018 в 15:35

Я столкнулся с аналогичной потребностью и закончил писать директиву углов для этого же -

guthub link - угловой выбор

Используется element[0].blur();, чтобы удалить фокус с выбранного тег. Логика запускает это размытие при втором щелчке раскрывающегося списка.

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

DEMO - guthub link - угловой выбор

0
ответ дан 15 August 2018 в 15:35

Я нашел это решение.

установил для выбранного значения selectIndex элемента select в значение 0, первоначально

//set selected Index to 0

doSomethingOnChange(){

     blah ..blah ..

     set selected Index to 0

}

вызывает этот метод в событииChange

-1
ответ дан 15 August 2018 в 15:35

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

<select

var list = document.getElementById("list");
var flag = true ; 
list.onchange = function () {
if(flag){
document.bgColor ="red";
flag = false;

}else{
document.bgColor ="green";
flag = true;
}
}
<select id="list"> 
<option>op1</option>
<option>op2</option>
<option>op3</option>
</select>

1
ответ дан 15 August 2018 в 15:35

вы должны попробовать использовать option:selected

$("select option:selected").click(doSomething);
1
ответ дан 15 August 2018 в 15:35

Попробуйте следующее:

<select id="nameSelect" onfocus="javascript:document.getElementById('nameSelect').selectedIndex=-1;" onchange="doSomething(this);">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>
0
ответ дан 15 August 2018 в 15:35

Если вам действительно нужно, чтобы это работало, я бы сделал это (чтобы убедиться, что он работает с помощью клавиатуры и мыши)

Добавить обработчик события onfocus к выбору для установки «текущего» значения Добавить обработчик события onclick для выбора для обработки изменений мыши. Добавить обработчик события onkeypress для выбора для изменения клавиатуры.

К сожалению, onclick будет выполняться несколько раз (например, при onpening select ... и выборе / close), и onkeypress может срабатывать, когда ничего не меняется ...

<script>
  function setInitial(obj){
    obj._initValue = obj.value;
  }
  function doSomething(obj){
    //if you want to verify a change took place...
    if(obj._initValue == obj.value){
      //do nothing, no actual change occurred...
      //or in your case if you want to make a minor update
      doMinorUpdate();
    } else {
      //change happened
      getNewData(obj.value);
    }
  }
</script>


<select onfocus="setInitial(this);" onclick="doSomething();" onkeypress="doSomething();">
  ...
</select>
6
ответ дан 15 August 2018 в 15:35

Таким образом, моя цель состояла в том, чтобы иметь возможность выбирать одно и то же значение несколько раз, что по существу перезаписывает функцию onchange () и превращает его в полезный метод onclick ().

Основываясь на приведенных выше предложениях, я придумал это, что работает для меня.

<select name="ab" id="hi" onchange="if (typeof(this.selectedIndex) != undefined) {alert($('#hi').val()); this.blur();}" onfocus="this.selectedIndex = -1;">
    <option value="-1">--</option>
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>
</select>

http://jsfiddle.net/dR9tH/19/

2
ответ дан 15 August 2018 в 15:35
  • 1
    Такой же недостаток, как и в других решениях onfocus="this.selectedIndex=-1": текущий выбор получает нук, если вы вставляете компонент в компонент, или если вы выходите из меню, не выбирая ничего. Нажмите вкладку на своей скрипке, чтобы понять, что я имею в виду. (Также обратите внимание, что вы получаете пустое значение, а не «-», когда вы это делаете. Это потому, что selectedIndex=-1 не дает вам <option value="-1">, здесь будет небольшое улучшение, чтобы использовать onfocus="this.selectedIndex=0". -decent обходной путь, но мне не нравится проигрывать текущий выбор только потому, что я заглянул в меню или даже просто привязался к нему. – skot 16 June 2015 в 00:19

Один ответ True - не использовать поле выбора (если вам нужно что-то сделать, когда вы повторно выбираете тот же ответ.)

Создайте выпадающее меню с помощью обычного div, кнопки, show / hide меню. Ссылка: https://www.w3schools.com/howto/howto_js_dropdown.asp

Можно было бы избежать, если бы кто-нибудь смог добавить прослушиватели событий к параметрам. Если на выбранном элементе был прослушиватель onSelect. И если щелчок на поле выбора не усугублял бы увольнение mousedown, mouseup и щелкнул все одновременно в mousedown.

0
ответ дан 15 August 2018 в 15:35

Продолжаем расширять ответ jitbit. Я обнаружил, что это странно, когда вы щелкнули вниз, а затем щелкнули вниз, не выбирая ничего. Заканчивается что-то по строкам:

var lastSelectedOption = null;

DDChange = function(Dd) {
  //Blur after change so that clicking again without 
  //losing focus re-triggers onfocus.
  Dd.blur();

  //The rest is whatever you want in the change.
  var tcs = $("span.on_change_times");
  tcs.html(+tcs.html() + 1);
  $("span.selected_index").html(Dd.prop("selectedIndex"));
  return false;
};

DDFocus = function(Dd) {
  lastSelectedOption = Dd.prop("selectedIndex");
  Dd.prop("selectedIndex", -1);

  $("span.selected_index").html(Dd.prop("selectedIndex"));
  return false;
};

//On blur, set it back to the value before they clicked 
//away without selecting an option.
//
//This is what is typically weird for the user since they 
//might click on the dropdown to look at other options,
//realize they didn't what to change anything, and 
//click off the dropdown.
DDBlur = function(Dd) {
  if (Dd.prop("selectedIndex") === -1)
    Dd.prop("selectedIndex", lastSelectedOption);

  $("span.selected_index").html(Dd.prop("selectedIndex"));
  return false;
}; 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="Dd" onchange="DDChange($(this));" onfocus="DDFocus($(this));" onblur="DDBlur($(this));">
  <option>1</option>
  <option>2</option>
</select>
<br/>
<br/>Selected index: <span class="selected_index"></span>
<br/>Times onchange triggered: <span class="on_change_times">0</span>

Это имеет немного больше смысла для пользователя и позволяет запускать JavaScript каждый раз, когда они выбирают любой параметр, включая более ранний вариант.

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

5
ответ дан 15 August 2018 в 15:35
  • 1
    Вы можете избавиться от предупреждений prop, перейдя в this вместо $(this). Однако из этого я не получаю все намеченное поведение; он не предупреждает, когда я повторно выбираю ту же самую опцию. – Noumenon 9 June 2016 в 07:24
  • 2
    Примечание: onchange запускается при добавлении параметров удаления в поле выбора через JS. Не только когда пользователь выбирает элемент – zanderwar 1 November 2016 в 04:21
  • 3
    @Noumenon Я исправил ошибки в этом, если он по-прежнему полезен. Я думаю, что тестировал это в самой программе, и когда я ее скопировал, я забыл переименовать переменную. Должен работать в редакторе и теперь иметь больше смысла. – Tyler Stahlhuth 25 January 2017 в 03:12

Замечательная вещь в теге select (в этом сценарии) заключается в том, что он получит свое значение из тегов параметров.

Попробуйте:

<select onChange="javascript:doSomething(this.value);">
<option value="A">A</option>
<option value="B">B</option>
<option value="Foo">C</option>
</select>

Работала прилично для меня .

0
ответ дан 15 August 2018 в 15:35

Пожалуйста, обратите внимание, что обработчики событий не поддерживаются для тега OPTION в IE с быстрым мышлением. Я придумал это решение, попробую его и дайте мне свои отзывы:

<script>
var flag = true;
function resetIndex(selObj) {
    if(flag) selObj.selectedIndex = -1;
    flag = true;
}
function doSomething(selObj) {
    alert(selObj.value)
    flag = false;
}
</script>
<select onchange="doSomething(this)" onclick="resetIndex(this)">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>

Что Я делаю здесь на самом деле сброс индекса выбора, так что событие onchange будет всегда срабатывать, правда, что вы теряете выбранный элемент, когда вы нажимаете, и это может раздражать, если ваш список длинный, но он может помочь вам каким-то образом. .

-1
ответ дан 15 August 2018 в 15:35

Вы можете использовать onChange: http://www.w3schools.com/TAGS/tag_Select.asp

Скопировано из http://www.w3schools.com/TAGS/tag_Select.asp onChange обозначает JavaScript для запуска, когда пользователь выбирает один из параметров. Это означает, что действие инициируется немедленно, когда пользователь выбирает элемент, а не когда нажата кнопка «отправить».

-1
ответ дан 15 August 2018 в 15:35
  • 1
    Как уже упоминалось в этом вопросе, это не работает, как это происходит только тогда, когда значение изменяется, а не когда какое-либо событие выбрано, включая текущий выбранный. – Darryl Hein 15 March 2009 в 08:43
  • 2
    Рад, что я не единственный, кто неправильно понял вопрос. – cletus 15 March 2009 в 08:54

Попробуйте это (событие срабатывает точно при выборе опции без изменения опции):

$("select").mouseup(function() {
    var open = $(this).data("isopen");
    if(open) {
        alert('selected');
    }
    $(this).data("isopen", !open);
});

http://jsbin.com/dowoloka/4

1
ответ дан 15 August 2018 в 15:35
[F1]
0
ответ дан 15 August 2018 в 15:35

Другие вопросы по тегам:

Похожие вопросы: