Jquery Mobile Select不会重置

时间:2011-12-16 12:31:54

标签: jquery-mobile

我正在使用Jquery Mobile写一个网上商店,我想使用选择菜单浏览可用的类别。当用户选择一个类别时,我想导航到同一页面,但添加了一些参数到网址。这是我选择的标记:

  <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"});
        }
    }
}

当我导航一次并尝试从select中选择另一个选项时,我的问题就出现了,我的javascript仍然会恢复之前的值;选择似乎没有重置!但是,当我按下F5并手动重新加载页面时,菜单会再次运行,直到我使用它为止。

任何人对我如何解决这个问题都有任何想法?正如您在javascript中看到的那样,“reloadPage:true”属性无法解决问题。

4 个答案:

答案 0 :(得分:10)

如果您正在使用jQuery Mobile的自定义选择字段,请尝试

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

这将成功重置jQuery mobile呈现的选项。

答案 1 :(得分:6)

您需要自己重置,也许可以尝试:

$('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);

前几天我遇到了类似的问题

答案 2 :(得分:4)

我不知道为什么Jquery移动选择按原样运行。除了这里提到的内容之外,以上都没有为我工作。我正在使用当前版本 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");

答案 3 :(得分:1)

您是否尝试过$('#productCatSelectMenu').selectmenu('refresh');

您可以查看有关refresh方法in the documentation

的信息