我的网站(MVC3 + JQuery)和它的移动版本(MVC3 + JQuery mobile)之间有一个非常奇怪的行为,它们分为两个不同的解决方案。
我正在使用以下代码根据另一个(SearchBy)更改下拉列表(SearchValue)的浓度。
剃刀:
@Html.DropDownListFor(x => x.SelectedSearch, new SelectList(Model.SearchBy, "key", "value"), new { onchange = "GetValues($(this).val());" })
@Html.DropDownListFor(m => m.SelectedSearchValue, new SelectList(Model.SearchValue, "key", "value"))
JSON:
$.ajax({
type: "POST",
url: '@Url.Action("GetValues", "Search")',
data: "{searchId:" + searchId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var options = $('#SelectedSearchValue');
$('option', options).remove(); // Remove previous
$.each(data, function () {
options.append($('<option/>').val(this.Id).text(this.Display));
});
}
});
此代码在我的网站(JQuery)上运行良好,但在我的移动网站(JQuery mobile)上却不是这样,它适用于 Opera Mobile 但不适用于 FF 或 IE 或 Safari ...(我尝试使用用户代理模拟移动设备)
SearchValue 下拉列表的值已正确设置,但在 JSON 调用结束时,所选值是先前选择的值(不在下拉列表的可能值中)。我不确定,所以我给你一个小例子:
我对 SearchBy 有以下可能性: - 名称 - 车
当我选择名称时,我想在 SearchValue 中显示“Name1”、“Name2”等内容 当我选择 Car 时,我想在 SearchValue 中显示“Car1”、“Car2”等内容
但是使用我的移动网站上的先前代码,当我将值“名称”更改为汽车时,下拉列表正确地重新填充了正确的值(“汽车 1”、“汽车 2”等),但选择的值是前一个(例如“Name1”)即使它不在下拉列表的可能值中。我也尝试手动选择第一个值但没有任何反应:
$('option[value=' + myBeautifulValue + ']').attr('selected', 'selected');
你有想法解决我的问题吗?我做错了吗?
提前感谢您的帮助,尼科
PS:对不起我的英语不好