2012-07-07 140 views
3

我的網站(MVC3 + JQuery)和它的移動版本(MVC3 + JQuery移動版)之間有一個非常奇怪的行爲,它們被分成兩個截然不同的解決方案。MVC3 DropDownList + JSON +選擇問題

我正在使用下面的代碼根據另一個(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調用結束時,選定的值是之前選定的值(不在下拉列表的可能值中)。我不知道是明確的,所以我給你一個小例子:

我有以下幾種可能的搜索項: - 名稱 - 汽車

當我選擇的名字,我想在SearchValue東西展示比如「Name1」,「Name2」等等 當我選擇Car時,我想在SearchValue中顯示類似「Car1」,「Car2」等的內容等。

但是用我的手機網站,當我將「名稱」值更改爲「汽車」時,下拉列表會正確填充正確的值(「Car1」,「Car2」等),但選定的值是前一個值例如「Name1」),即使它不在下拉列表的可能值中。我也嘗試手動選擇第一個值,但沒有任何反應:

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

您有解決我的問題的想法嗎?我做錯了什麼?

預先感謝您的幫助, 尼科

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

回答

1

嘗試使用jQuery的prop

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

jQuery upgrade blog notes - 設定時, selected屬性的元素使用.prop來獲取/設置值。

+0

遺憾的是它不工作。但我現在會使用'道具',因爲它是首選的使用方式:) Thiks for your idea! – nFournier 2012-07-07 01:36:41

+1

好的,我在這裏找到了解決方案。我必須刷新下拉列表,更加奇怪! 像這樣: var myselect = $(「#SelectedSearchValue」); myselect [0] .selectedIndex = 0; myselect.selectmenu('refresh'); [http://www.andymatthews.net/read/2011/12/14/Refreshing-jQuery-Mobile-listviews,-buttons,-se-dropdowns,-and-input-fields][1] [1]:http://www.andymatthews.net/read/2011/12/14/Refreshing-jQuery-Mobile-listviews,-buttons,-select-dropdowns,-and-input-fields – nFournier 2012-07-07 02:09:34

+0

@nFournier這是新的對我來說,你應該回答你自己的問題,因爲它可能會幫助別人有同樣的問題... – xandercoded 2012-07-07 04:14:10

3

好吧,我找到了解決方案。我必須刷新下拉列表,更加奇怪! 就像是:

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

Source