2

そこで、サイトのすべての選択メニューをソートするコードを書きました。これは、Firefox を除く、サポートしているすべてのブラウザーで完全に機能します。

http://jsfiddle.net/vkjAC/6/

私のコードは、select 要素のオプションを受け取り、並べ替えて、返します。そこのどこかで、select 要素の selectedIndex が最後の項目に変わります。

選択されている値/defaultSelected を確認します。

for(k=0; k<options.length; k++)
{
    if(options[k].defaultSelected == true)
    {
        sel = k;
        break;
    }
}
if(sel === null)
{
    for(k=0; k<options.length; k++)
    {
        if(options[k].selected == true)
        {
            sel = k;
            break;
        }
    }
}
if(sel === null)
    { options[0].selected = true; }
else
    { options[sel].selected = true; }

しかし、この関数から selectedIndex を設定することはできません。これは、選択オブジェクト全体ではなく、オプション リストだけを渡すためです。

同様の問題を調べてみましたが、私が見た他のすべてのスレッドは、キャッシュの問題であるか、autocomplete="off" を追加する必要があると言っていましたが、それらは機能しませんでした。私のコードに関係があると思いますが、selectedIndex プロパティをどこにも変更していません。

助言がありますか?私は正気を失いつつあります (そして時間切れです!)

4

1 に答える 1

1

私はこれを以前に持っていました。オプションが削除されてから再度追加されるという事実と関係があります。ソート後に値を再選択する必要があります。例えば:

var ops = $('#mass').find('option');
$('#mass').prepend(sortDropDown(ops)).val($("#mass > option[selected]").val());
于 2012-12-18T20:40:33.533 に答える