Jquery Mobile Select не сбрасывается - PullRequest
3 голосов
/ 16 декабря 2011

Я пишу интернет-магазин с Jquery Mobile, где хочу использовать меню выбора для просмотра доступных категорий.Когда пользователь выбирает категорию, я хочу перейти на ту же страницу, но с несколькими параметрами, добавленными в URL.Это моя разметка для выбора:

  <asp:Repeater id="productCatSelect" runat="server">
                <HeaderTemplate>
                        <select id="productCatSelectMenu" data-native-menu="false" onchange="categoryClick();" class="button" data-theme="a">
                        <option data-placeholder="true">All Categories</option>
                </HeaderTemplate>
                <ItemTemplate>
                    <option value="<%# Eval("NodeID") %>" ><%# Eval("Description")%></option>
                </ItemTemplate>
                <FooterTemplate>
                    </select>
                </FooterTemplate>
</asp:Repeater>

А вот и JavaScript:

function categoryClick() {
    var mySelect = $("#productCatSelectMenu");
    if (mySelect.val() != '') {
        if (mySelect.val() == 0) {
            $.mobile.changePage("shop.aspx", {reloadPage: true, transition:"slide"});
        } else {
            $.mobile.changePage("shop.aspx?c=" + $("#productCatSelectMenu").val() + "&n=" + $('#productCatSelectMenu :selected').text(), {reloadPage: true, transition:"slide"});
        }
    }
}

Моя проблема возникает, когда я однажды перешел и пытаюсь выбрать другой вариант из выбора,мой JavaScript все еще возвращает предыдущее значение;Выбор не сбрасывается!Однако, когда я нажимаю F5 и перезагружаю страницу вручную, меню снова работает, пока я не использую его один раз.

У кого-нибудь есть идеи, как мне это исправить?Как вы можете видеть в javascript, атрибут «reloadPage: true» не решает проблему.

Ответы [ 4 ]

10 голосов
/ 29 мая 2012

Если вы используете поле произвольного выбора jQuery Mobile, попробуйте

$("#select_id").selectmenu('refresh', true) 

Это успешно сбросит параметры выбора, представленные jQuery mobile.

6 голосов
/ 16 декабря 2011

Вам нужно будет сбросить это самостоятельно, возможно, попробуйте:

$('select#productCatSelectMenu option').attr('selected', false);

или

$('select#productCatSelectMenu option').removeAttr('selected');

или

$('select#productCatSelectMenu').children('option').removeAttr('selected').filter(':nth-child(1)').attr('selected', true);

или

$('select#productCatSelectMenu').attr('selectedIndex', -1);

У меня была похожая проблема на днях

4 голосов
/ 07 ноября 2014

Понятия не имею, почему Jquery Mobile Select работает так, как есть. Ничто из вышеперечисленного не работает для меня, за исключением того, что упоминается здесь. Я использую текущие версии JQuery-1.10.2.min.js jquery.mobile-1.4.2.min.js

https://forum.jquery.com/topic/resetting-select-menu

var myselect = $("select#useOfColor");
myselect[0].selectedIndex = 0;
myselect.selectmenu("refresh");
1 голос
/ 16 декабря 2011

Вы пробовали $('#productCatSelectMenu').selectmenu('refresh');?

Вы можете проверить информацию о методе refresh в документации

...