Событие, которое слушает ЛЮБОЙ выпадающий список?

0

У меня есть MULTIPLE divs, где каждый div состоит из текста, а затем выпадающего списка, за которым следует текстовое поле, например:

<div>
Punch <select>
         <option>Hawaiin Punch</option>
         <option>Vodka</option>
     <select/>
     <input type="text" id="textfield_2"></input>
</div>

Мой полный пример: http://jsfiddle.net/HsF2Y/3/

Выполните следующие действия:

  1. Введите "лимоны" в текстовое поле.
  2. Выберите "Водка" из выпадающего меню; он добавляется к "лимонам". Введите "," после него.
  3. Еще раз выберите "Водка"; текст остается тем же.

Я хочу слушать событие, отличное от "изменения", так что шаг 3 вызывает добавление "Водки" снова. Итак, после всех трех шагов мое текстовое поле должно показать текст: "лимоны, водка, водка". Может кто-нибудь исправить код на скрипке, пожалуйста? Благодарю.

  • 0
    Вы не можете, событие изменения срабатывает только тогда, когда выбор фактически изменяется, повторное выделение того же значения не вызывает событие, и нет других событий, которые бы работали так же. Самое близкое, что вы получите - это «щелчок», но он будет срабатывать каждый раз, когда вы нажимаете кнопку выбора, и опции не запускают события, так что это не так.
  • 0
    Как мне получить желаемое поведение тогда?
Показать ещё 3 комментария
Теги:

2 ответа

0

Если вы добавите пустой параметр для каждого выбора, вы можете сделать что-то вроде этого:

$("select.choices").change(function () {
    if (this.value) {
        $(this).next().trigger('doUpdate', [this.value]);
        /* reset after selections updated*/
        this.value = "";
    }
});

$('.selections').each(function () { /* loop each so data array unique*/
    $(this).data('selections', []).on('doUpdate', function (evt, newVal) {
        var data = $(this).data('selections')
        data.push(newVal)
        this.value= data.join();
    }).change(function(){
         /* for manually added store new array*/
        var arr= $.trim(this.value).split(',');
         $(this).data('selections',arr)
    });
});

DEMO

0

Вы пытались с click вместо change?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню