【问题标题】:jquery droplist refreshjquery下拉列表刷新
【发布时间】:2011-07-22 14:55:27
【问题描述】:

我的下拉菜单有问题...我在页面上有一个下拉菜单和一个保存按钮...当您选择所需的下拉选项时...然后单击保存...该值将转到数据库并存储那里..当您再次进入此页面时...下拉菜单必须显示您上次保存的值...但我有一个问题..当我来到此页面时..下拉菜单不显示正确的值..它向我显示了第一个值..但是当我单击它时,在此菜单中选择的选项是正确的..

我想也许我需要刷新一下?

这里是js->

    <script>
    $(document).ready(function() {
        var defaultValue = Settings.getDefaultTimespan();


        if (defaultValue == $('#opt' + defaultValue).val()) {

            $('#opt' + defaultValue).attr('selected','selected');  
        }

        $('#saveBtn').click(function() {

            Settings.setDefaultTimespan(parseInt($('#timeSettingsDropList').val()));

        });
    });
    </script>

这里是 HTML->>

            <div id="timespanSettings">
                <table>
                    <tr>
                        <td style="width: 15%"><p>Default timespan:</p></td>
                        <td style="width: 85%"><select name="timeDropList" id="timeSettingsDropList">
                                <option id="opt0" value="0">6 Minutes</option>
                                <option id="opt1" value="1">10 Minutes</option>
                                <option id="opt2" value="2">15 Minutes</option>
                                <option id="opt3" value="3">30 Minutes</option>
                                <option id="opt4" value="4">1 Hour</option>
                        </select></td>
                    </tr>
                </table>

            </div>

如您所见.. 下拉菜单显示“6 分钟”,但选择的是“1 小时”

【问题讨论】:

  • 也许我错过了这个问题,但 jQM 默认做到这一点,不是吗?现场演示:jsfiddle.net/phillpafford/trdYP/5 选择时间,导航到第 2 页并返回主页。值应该是你选择的
  • 我需要将数据保存在数据库中,因为我需要在另一个地方更改它..它是设置页面..您必须选择时间跨度的默认值..它不起作用如果您退出应用程序...然后再去那里..

标签: javascript jquery android jquery-mobile


【解决方案1】:

不确定这是否可行,但使用 localStorage 怎么样?实例:

JS:

var ts = localStorage.getItem('timeSelected');

var tsList = $('#timeSettingsDropList');
tsList[0].selectedIndex = ts;
tsList.selectmenu("refresh");

$('#timeSettingsDropList').change(function() {
    localStorage.setItem('timeSelected', $(this).val());
    ts = localStorage.getItem('timeSelected');
});

HTML:

<div data-role="page" id="home"> 
    <div data-role="content">
        <div id="timespanSettings">
            <table>
                <tr>
                    <td style="width: 15%"><p>Default timespan:</p></td>
                    <td style="width: 85%"><select name="timeDropList" id="timeSettingsDropList">
                            <option id="opt0" value="0">6 Minutes</option>
                            <option id="opt1" value="1">10 Minutes</option>
                            <option id="opt2" value="2">15 Minutes</option>
                            <option id="opt3" value="3">30 Minutes</option>
                            <option id="opt4" value="4">1 Hour</option>
                    </select></td>
                </tr>
            </table>
        </div>
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f"> 
            <li data-role="list-divider">Navigation</li> 
            <li><a href="#page2">View Page 2</a></li> 
        </ul> 
    </div>
</div>
<!-- Page 2 -->
<div data-role="page" id="page2"> 
    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f"> 
            <li data-role="list-divider">Navigation</li> 
            <li><a href="#home">View Home Page</a></li> 
        </ul>
    </div>
</div>

【讨论】:

  • 好的,谢谢..帮助->>> $('#timeSettingsDropList').selectmenu("refresh");
【解决方案2】:

要在下拉列表中选择选项,您只需在 val 方法中传递值,如下所示。

$(document).ready(function() {
        var defaultValue = Settings.getDefaultTimespan();

        $("#timeSettingsDropList").val(defaultValue);

        $('#saveBtn').click(function() {

            Settings.setDefaultTimespan(parseInt($('#timeSettingsDropList').val()));

        });
    });

【讨论】:

  • ou.. 我试过了.. 但结果是一样的.. 我的意思是值正在改变.. 但下拉菜单中的文本没有
  • 您可能还保留了旧代码,这实际上是设置选项的选定属性。请检查我编辑的答案我已经编写了完整的代码。谢谢
  • 你能解释一下到底发生了什么吗?
  • 我保存了值,例如“2”(15 分钟)......并退出该页面......当我返回时......在下拉菜单中显示“6 分钟”(第一个值)......但是当我点击这个下拉菜单时..打开完整的值列表...并且有正确的值..
  • 这取决于它返回的 Settings.getDefaultTimespan() 。请看看这个方法。
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多