jQuery Chosen: как ограничить количество выбранных значений и предоставить сообщение об ошибке - PullRequest
4 голосов
/ 14 февраля 2012

Я использую jQuery Chosen для 2 <select> элементов.Каждый элемент содержит одинаковые значения, и я использую циклы для помещения выбранных значений в массив и отключения всех значений, которые уже были помещены в этот массив и не являются выбранной опцией.Другими словами: я всегда отключаю доппельгангер.

Я пытаюсь ограничить количество выбранных значений последним циклом, используя атрибут данных "maxpersons" и сравнив его с количеством выбранных значений.

К сожалению, , это работает только тогда, когда опции не были предварительно выбраны .Если они есть, кто-то еще может выбрать еще одно значение.Что не должно быть разрешено.

Также , я бы хотел поставить тег <p> рядом с элементом <select>, когда достигнут максимум, и удалить его автоматически, когдамаксимум еще не достигнут.

Любая помощь будет принята с благодарностью!Это JS Fiddle: http://jsfiddle.net/dq97z/28/

1 Ответ

5 голосов
/ 27 марта 2012

вы можете поместить тот же код, который вы использовали в событии change () в событие document.ready (). Как это,

$(document).ready(function(){
    var selected = [];
    var chosen='.chzn-select';
    $(chosen).parent().parent().find("option")
      .each(function () {
        if (chosen.selected) {
          selected[chosen.value] = this;
        }
      })
      .each(function () {
        this.disabled = selected[this.value] && selected[this.value] !== chosen;
      })
      .each(function () {
        if ($(this).parent().data('maxpersons') === $(this).parent().find('option:selected').length) {
          $(this).parent().find('option:not(:selected)').prop('disabled', true);
        }
      });
    $('.chzn-select').trigger("liszt:updated");
})

Спасибо за фрагмент кода ...!

...