7

fe 10オプション(「1」、「2」、「3」、...)の選択があります。ページをロードすると、最初のオプション「one」が選択されます。

関数内で5番目のオプションに設定しました

$("myselect").val('five');

実際、5番目のオプションがselectに表示され、値も正しく設定されています。

しかし今、私はこの選択に到達するまで自分のフォームでタブを押します。そして、キーボードのダウンキーを使用すると、選択は「6」ではなく「2」のオプションにジャンプします。

後でキーボードを使用するためにも機能する選択されたオプションを設定するにはどうすればよいですか?

4

3 に答える 3

5

selectedIndexプロパティを設定してみてください。下記参照、

$('#myselect').val("5").prop('selectedIndex', 4);

デモ:http: //jsfiddle.net/kLZ7z/

もう1つのよりクリーンなアプローチは

var nValue = "5";
$('option', '#myselect').filter(function () {        
    return this.value == nValue;
}).prop('selected', true);

デモ:http: //jsfiddle.net/kLZ7z/2/

于 2012-11-08T18:42:02.087 に答える
1

これはFirefoxのバグです。私が見つけた解決策の1つは.prop('selected', true)、選択ではなく、オプションで使用.valすることです。

$('#myselect').children('option[value="five"]').prop('selected', true);

デモ:http://jsfiddle.net/JM2dZ/1/

注:最初に他のオプションの設定を解除する必要はありません。設定を解除selectedすると、実際に問題が発生し続けます。

于 2012-11-08T18:57:37.727 に答える
0

少し推測しますが、これを試してください:

$('#myselect option').each(function(){
    $(this).removeAttr('selected'));
});
$('#myselect option').eq(4).attr('selected', 'selected');

これは、何を試すべきかを理解するための、テストされていない擬似コードです。

于 2012-11-08T18:38:06.380 に答える