jQuery UI Selectmenu значение, установленное динамически, не меняет видимое выбранное значение - PullRequest
12 голосов
/ 29 марта 2012

Я использую jQuery UI Selectmenu, и у меня возникают проблемы при установке значения отобранного выбранного. Кажется, он изменяет выбранную опцию в базовом выборе, но в меню выбора это изменение не отображается. Я звоню .selectmenu («обновить», правда), но ничего не происходит.

Вот пример: http://jsfiddle.net/sociobit/wYBeL/

1 Ответ

14 голосов
/ 29 марта 2012

Hiya So демо (решение) http://jsfiddle.net/wYBeL/43/ вместо обновления попробуйте .selectmenu("value", selectedValue); ИЛИ (Hack) http://jsfiddle.net/wYBeL/36/ (сохраняет настройку selectpopup у вас :) Что когда-либо подходитyou

Итак, я проверил DOM с помощью firebug, и кажется, что стиль selectmenu (): popup добавляет дополнительный уровень стилей, но значение # sel2 установлено правильно, и вам просто нужно установить правильный элемент с правильным значением.Я полагаю, что обновление будет работать, когда у вас будет ajax, заполняющий выпадающий список и обновляющий часть страницы.

Хм, вы можете попытаться просмотреть API для получения более подробной информации. В случае, если вам не нужно всплывающее окно selectmenu, тогда безесли это будет работать так же, как сказал @jiimw: (BUT стилизация идет странно): http://jsfiddle.net/wYBeL/35/; Пожалуйста, дайте мне знать, если это не поможет, я удалю сообщение.

дополнительная ссылка: http://wiki.jqueryui.com/w/page/12138056/Selectmenu

Надеюсь, что оба помогают.

Код JQuery здесь

$(function() {

    $('select').selectmenu({
        style: 'popup'
    });

    $('#chksame').click(function() {
        if ($(this).is(':checked')) {
            var selectedValue = $('#sel1').val();
            $('#sel2').val(selectedValue);

            $('#sel2').selectmenu("value", selectedValue);

        }

    });
});​

** ИЛИ **

$(function() {

        $('select').selectmenu({
            style: 'popup'
        });

        $('#chksame').click(function() {
            if ($(this).is(':checked')) {
                var selectedValue = $('#sel1').val();
                $('#sel2').val(selectedValue);

                // set the right element with the select value
                $('#sel2-button span').text($("#sel2 option[value='" + selectedValue +"']").text());

                $('#sel2').selectmenu('refresh', true);

            }

        });
    });​

Приветствия

...