【发布时间】:2023-03-17 16:46:01
【问题描述】:
我有一个 MVC 2 / jQuery 移动应用程序。
在我的主视图中,我有一个可排序的列表。排序通过 url 参数sortorder 进行。用于更改排序的下拉菜单位于部分视图中,如下所示:
<div class="ui-select">
<select name="sortSelect" id="sortSelect" data-mini="true">
<option value="opt1">Option 1</option>
<option value="opt2">Option 2</option>
<option value="opt3">Option 3</option>
</select>
</div>
然后我有一个 jQuery 来检查下拉菜单是否已更改。在更改时,它会使用新的下拉值添加或更改 url sort 参数并重定向到新的 url:
$(document).ready(function () {
$('#sortSelect').change(function () {
var sortOrder = $('#sortSelect').val();
var url = document.URL;
if (url.indexOf("sortorder=") > -1)
url = url.replace(/sortorder=[^&]+/, "sortorder=" + sortOrder);
else
url = url + "&sortorder=" + sortOrder;
window.location.replace(url);
});
});
由于排序前还有一些其他参数,所以加上&就可以了。
要在新加载页面时从 url 设置正确的值,我有以下 jQuery(函数 gup 从 url 读取值):
$('#sortSelect').ready(function () {
var sortorder = gup('sortorder');
if (sortorder != '')
$('#sortSelect').val(sortorder);
}
有一个问题:如果我加载站点并通过下拉列表更改sortorder,那么到目前为止一切正常。该页面新加载了新的 url 参数和新排序的列表。甚至下拉值设置正确(我通过alert($('#sortSelect').val() 进行了检查,但下拉文本是旧文本。如果我按 F5,网站会刷新,并且下拉列表有正确的文本...
有什么想法可以解决这个问题吗?或者根本是什么问题?
【问题讨论】:
-
我自己找到了答案。正如预期的那样,我必须像这样用 $("#sortSelect").selectmenu("refresh"); 刷新选择(下拉菜单): $('#sortSelect' ).ready(function () { var sortorder = gup('sortorder'); if (sortorder != '') $('#sortSelect').val(unescape(sortorder)); $("#sortSelect").选择菜单(“刷新”);});有时,简单的问题需要一些时间;)
标签: asp.net-mvc jquery-mobile partial-views