SumoSelect не будет открыт после перезагрузки
Я использую sumoselect на входах в моем Интернете.
Проблема в том, что если вы открываете второй сумоселект, и после этого вы хотите открыть сначала -so, нажмите сначала, и он не откроется...
Мой код:
$('.country').SumoSelect({placeholder: 'first'});
$('.anotherSumo').SumoSelect({placeholder: 'second'});
$('.anotherSumo').on('sumo:closing', function(e) {
$('.country').empty();
$('.country').append('<option value="newValue">newValue</option>');
$('.country')[0].sumo.reload({placeholder: 'first'});
});
Здесь работает скрипка. Просто откройте второй выбор и после этого попробуйте открыть сначала - 2 клика. В обратном порядке - сначала нажмите, чтобы открыть первый сумо, и после этого второй клик на втором сумо - все в порядке...
Я пытался добавить $('country').trigger("click");
после перезагрузки, но ничего
https://jsfiddle.net/eqa9og2v/5/
Мне нужно знать, как открыть первый сумо на втором клике любым способом, но с функциональным триггером на сумоселекте закрыть - потому что первый пользователь делает свой выбор, и если пользователь выполнил выбор параметров, он закрыл sumoselect (с открытием другого или только закрытием)
Я думаю, что способ, которым вы пытаетесь реализовать, не осуществимо и не будет достигнуто, потому что, когда вы нажимаете на 1-й, чтобы открыть его, вызывается второе выпадающее закрытие, в котором вы снова создаете 1-й. так что фактический щелчок 1-го падения будет потерян, так как все новые привязки добавляются к 1-й капли.
вы должны изменить код в плагине, если хотите достичь его, что не является хорошей практикой. Кроме того, вы можете принудительно отобразить варианты с помощью $('.sumo_country').addClass('open').attr('aria-expanded', 'true');
но снова для закрытия раскрывающегося списка вам нужно дважды щелкнуть в первый раз.
Правильный и осуществимый способ изменить любые выпадающие значения, которые зависят от другого, заключается в использовании функции change
выпадающего списка.
В вашем случае вы должны изменить данные всякий раз, когда значение выбрано или отменено из второго выпадающего списка, которое будет работать для вас.
Вот рабочий пример. Как вы упомянули в комментариях, вы хотите изменить 1-й выбор после выбора чего-то с 2-го, а не сразу после его закрытия. .on('change',...)
похоже, делает трюк.
Поэтому я понял... Есть способ сделать это! Мне это нужно было очень остро - если у вас есть какие-то уведомления или что-то еще, что вам угодно.
Мой код:
$('.country').SumoSelect({placeholder: 'first'});
$('.anotherSumo').SumoSelect({placeholder: 'second'});
$('.anotherSumo').on('sumo:closed', function(e) {
var count = $('.country option').length;
for(var i = 0; i < count; i++) {
$('.country')[0].sumo.remove(0);
}
$('.country')[0].sumo.add('newValue','newValue', 0);
});
Рабочая скрипка: https://jsfiddle.net/eqa9og2v/7/
ВНИМАНИЕ: Если вам необходимо правильно рабочие входы (для отправки формы или что) вам нужно добавить/удалить option
элементы в select
по своему тоже...
Еще в рубрике
- Вопросы
- Sumoselect.js
- SumoSelect не будет открыт после перезагрузки