MVC3的DropDownList + JSON +选择问题(MVC3 DropDownList +

2019-09-19 04:17发布

我有我的网站(MVC3 + JQuery的)和它的移动版本(MVC3 + jQuery Mobile的),它们在两个不同的解决方案之间的分裂一个很奇怪的行为。

我使用下面的代码根据另一个(SearchBy)来改变下拉(SearchValue)的concent。

剃刀:

@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类似“名1”中显示,“名称2”,等等等等而当我选择汽车,我想在SearchValue类似“分享帮助”显示,“CAR2”,等等等等

但随着我的移动网站前面的代码,当我改变值“名称”,以汽车”(分享帮助‘‘CAR2’等)时,下拉列表中正确与正确的价值观补充’,但所选择的值是前一个(例如,“名称1”),即使它不是在下拉的可能值我也尽量选择手动的第一个值,但什么也没有发生:

$('option[value=' + myBeautifulValue + ']').attr('selected', 'selected');

你有一个想法,以解决我的问题? 是我做错了吗?

预先感谢您的帮助,尼科

PS:对不起,我的英文不好

Answer 1:

好吧,我找到了解决办法。 我必须刷新下拉列表中,奇怪! 像那样 :

var myselect = $("#SelectedSearchValue"); 
myselect[0].selectedIndex = 0; 
myselect.selectmenu('refresh'); 

资源



Answer 2:

尝试使用jQuery的prop

$('option[value=' + myBeautifulValue + ']').prop('selected', true);

见jQuery的升级博客笔记 -设置时selected的元素属性使用.prop获取/设置的值。



文章来源: MVC3 DropDownList + JSON + selected issue