3

私のウェブサイト(MVC3 + JQuery)とそのモバイルバージョン(MVC3 + JQuery mobile)の間で、2つの異なるソリューションに分割された非常に奇妙な動作があります。

次のコードを使用して、ドロップダウン(SearchValue)の濃度を別のドロップダウン(SearchBy)に従って変更しています。

かみそり:

@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)で完全に機能していますが、Opera Mobileでは機能しているがFF、IE、Safariでは機能していない私のモバイルウェブサイト(JQuery mobile)ではそうではありません...(ユーザーエージェントで試しましたモバイルデバイスをシミュレートするため)

SearchValueドロップダウンの値は正しく設定されていますが、JSON呼び出しの最後に、選択された値は前に選択された値です(ドロップダウンの可能な値には含まれていません)。明確かどうかわからないので、少し例を挙げます。

SearchByには次の可能性があります。-名前-車

Nameを選択すると、SearchValueに「Name1」、「Name2」などが表示されます。Carを選択すると、SearchValueに「Car1」、「Car2」などが表示されます。

しかし、私のモバイルWebサイトの以前のコードでは、値「名前」を「車」に変更すると、ドロップダウンリストに正しい値(「Car1」、「Car2」など)が正しく再入力されますが、選択した値は前の値です。 (例: "Name1")ドロップダウンの可能な値にない場合でも、最初の値を手動で選択しようとしますが、何も起こりません:

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

私の問題を解決するアイデアはありますか?私が間違っていることはありますか?

よろしくお願いします、ニコ

PS:私の英語が下手でごめんなさい

4

2 に答える 2

3

わかりました、私は解決策を見つけました。ドロップダウンを更新する必要があります。そのように:

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

ソース

于 2012-07-07T04:22:50.480 に答える
1

jQueryを使用してみてくださいprop

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

jQueryアップグレードブログノートを参照してください—selected要素に属性を設定するとき.propは、値を取得/設定するために使用します。

于 2012-07-07T01:20:22.547 に答える