Chosen: .trigger ("selected: updated") не подходит для выбора параметра, который я даю

Созданный на 18 окт. 2016  ·  7Комментарии  ·  Источник: harvesthq/chosen

когда я пытаюсь повторно выбрать значение dirrert через ajax
в первый раз функция делает правильные вещи
через два или более раза, когда я изменил параметр выбора num1
другой выбор num2 должен быть обновлен, выбрав что-то еще, параметр val
но не кратно все опции, которые мне нужны, или вообще не выбран ни один

Ожидаемое поведение

Расскажите, что должно произойти.
когда я меняю один элемент выбора
выберите 2, выбрав другой вариант, основной вариант, который я получаю через ajax

Фактическое поведение

Расскажите, что происходит вместо этого.

Окружающая обстановка

  • Выбранная версия : 1.6.2
  • jQuery или версия прототипа :
  • Браузер и версия : chrome 54.0.2840.59 m (64-бит)
  • ОС и версия : WIN7 SP1 64BIT






делаю что-нибудь для развлечения {
$ ("# один вариант [значение = 1] '). attr (' selected ', true);
$ ("# один вариант [значение = 3] '). attr (' selected ', true);
}
$ ("# один"). val (1) .trigger ("выбрано: обновлено");

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

Awaiting Reply

Самый полезный комментарий

Привет, blankhang,
Ваша проблема может быть решена этим.
что ты делаешь:
$ ("# один вариант [значение = 1] '). attr (' selected ', true);
$ ("# один вариант [значение = 3] '). attr (' selected ', true);
$ ("# один"). val (1) .trigger ("выбрано: обновлено");

что нужно сделать

$ ("# один вариант [значение = 1] '). attr (' selected ', true);
$ ("# один вариант [значение = 3] '). attr (' selected ', true);
$ ("# один"). trigger ("selected: updated");

не давать никакого значения при запуске обновления;

Все 7 Комментарий

извините за мой бедный английский: sob:

Если я правильно понимаю, вы добавляете новые параметры в select с помощью запроса ajax, а затем запускаете chosen:updated чтобы Chosen отражал изменения?

Пожалуйста , настроить скрипку , чтобы продемонстрировать problen, и тогда мы сможем решить , если это ошибка или просто проблема с реализацией.

СПАСИБО ЗА REP

НЕ НРАВИТСЯ .. не обновлять список опций
список опций такой же
но значение не так
каждый раз, когда я хочу изменить выбранное значение триггера
когда я первый раз значение выбранных элементов было правильным
но пойдет не так, когда позже
я не могу получить правильное значение элемента select ....
image
image
при первой загрузке функция была правильной, нужно было выбрать только один вариант
image
image

затем еще раз
image

это должно быть так
Uploading image.png…

https://jsfiddle.net/4jtsdnt7/ someof

Привет, blankhang,
Ваша проблема может быть решена этим.
что ты делаешь:
$ ("# один вариант [значение = 1] '). attr (' selected ', true);
$ ("# один вариант [значение = 3] '). attr (' selected ', true);
$ ("# один"). val (1) .trigger ("выбрано: обновлено");

что нужно сделать

$ ("# один вариант [значение = 1] '). attr (' selected ', true);
$ ("# один вариант [значение = 3] '). attr (' selected ', true);
$ ("# один"). trigger ("selected: updated");

не давать никакого значения при запуске обновления;

У меня возникла та же проблема после обновления состояния выбора параметров множественного выбора с помощью JS, а затем попытки обновить Chosen, чтобы отобразить выбор. Я сделал скрипку, демонстрирующую это поведение:

https://jsfiddle.net/5wbzxg27/

Есть 3 кнопки:

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

Каждый параметр отображается в поле «Выбрано» только один раз, даже если вы нажмете одну и ту же кнопку (и обновите ее) несколько раз . Сценарий работает нормально, выбранное состояние исходных опций выбора изменяется нормально, но выбранный показывает опции только в первый раз.

Надеюсь это поможет.

@cinemazealot попробуйте следующий код:

$("#mySelect").chosen({
       placeholder_text_multiple: 'Something',
});
$('button#all').on('click', function() {
  $('#mySelect option').attr('selected', false);   // selects all
  var options = [];
  for (var i=0; i < $('#mySelect option').length; i++){
    options.push($('#mySelect option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});
$('button#first').on('click', function() {
  $('#mySelect option').attr('selected', false);  // clears all
  var options = [];
  for (var i=0; i < $('#mySelect optgroup[label="first"] option').length; i++){
    options.push($('#mySelect optgroup[label="first"] option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});
$('button#second').on('click', function() {
  $('#mySelect option').attr('selected', false);  // clears all
    var options = [];
  for (var i=0; i < $('#mySelect optgroup[label="second"] option').length; i++){
    options.push($('#mySelect optgroup[label="second"] option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});

Это может показаться неуклюжим и большим, но, похоже, работает

@pashaUSA ты лучший! :) Извините за запоздалую реакцию, у меня были другие запущенные проекты. Но ваше решение просто делает то, что должно. Большое спасибо! :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги