Подтвердить что ты не робот

Измените значение поля выбора Chosen.js, используя jQuery

Я пытаюсь изменить значение поля выбора, которое имеет Chosen.js overlay. Идея состоит в том, чтобы изменить выбранное значение, когда пользователь нажимает кнопку.

С помощью регулярного блока выбора я могу изменить значение, выполнив:

$('#GroupsShowNext').unbind("click").click(function() {
    var index = $("#GroupsViewGroups").prop("selectedIndex");
    index += 1;

    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected');
    $('#GroupsViewGroups').change();
});

Но с Chosen.js это больше не работает. Я пробовал несколько вещей, но ничего не сработало. Любые идеи, как заставить его работать?

Fiddle

4b9b3361

Ответ 1

Итак, после публикации этого вопроса я продолжал пытаться решить эту проблему и выяснил, как это сделать.

$('#GroupsShowNext').unbind("click").click(function() {
    var index = $("#GroupsViewGroups").prop("selectedIndex");
    index += 1;
    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected');
    $('#GroupsViewGroups').chosen().change();
    $("#GroupsViewGroups").trigger("liszt:updated");
});

Ключ должен был поставить .chosen() перед .change(), а затем вызвать "liszt: updated". Он работает, но я не знаю, подходит ли это для этого.

Если у вас есть лучший способ сделать это, пожалуйста, дайте мне знать

Ответ 2

Я наткнулся на это, пытаясь понять это сам.

Я смог сделать это с комбинацией изменения выбранного индекса в исходном поле и затем запускать событие liszt:updated в этом поле:

$('#GroupsViewGroups')[0].selectedIndex = $('#GroupsViewGroups')[0].selectedIndex + 1;
$('#GroupsViewGroups').trigger('liszt:updated');

Ответ 3

Просто обновление (я нашел эту страницу из Google, возможно, другие люди тоже ее найдут)

Я попытался прокомментировать ответ @splitz, но я не мог, потому что у меня все еще недостаточно репутации.

Новый способ сделать это:

$('#GroupsShowNext').unbind("click").click(function() {
    var index = $("#GroupsViewGroups").prop("selectedIndex");
    index += 1;
    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected');
    $("#GroupsViewGroups").trigger("chosen:updated");
});

Теперь трюк - это "выбранный: обновленный".

Обновленный ответ найден в: Изменение выбора в элементе с помощью выбранного вами модуля

Ответ 4

С плагином Chosen.js он работает.

var myIndex = 4;

$("select#GroupsViewGroups").prop('selectedIndex', myIndex);