211

jQueryを使用して、選択メニューでオプションが選択されているかどうかを確認し、そうでない場合はオプションの1つを選択済みとして割り当てます。

(select は、継承したばかりのアプリで PHP 関数の迷路を使用して生成されます。そのため、これらについて頭を悩ませている間、これを簡単に修正します :)

4

18 に答える 18

272

あなたが何を達成したいのか正確にはわかりませんが、このコードはうまくいきました。

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>
于 2008-09-29T17:42:11.273 に答える
30

これには jQuery を使用する必要はありません。

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}
于 2008-09-29T16:57:01.493 に答える
15

この質問は古く、多くの見解があるため、一部の人々に役立つと確信しているいくつかのものをそこに投げ出します。

選択要素に選択された項目があるかどうかを確認するには:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

または、選択に何も選択されていないかどうかを確認するには:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

または、ある種のループにいて、現在の要素が選択されているかどうかを確認したい場合:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

ループ中に要素が選択されていないかどうかを確認するには:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

これらは、これを行うためのいくつかの方法です。jQuery には同じことを実現するさまざまな方法があるため、通常は最も効率的と思われる方法を選択するだけです。

于 2013-09-13T19:27:24.950 に答える
12

lencioniの答えは私がお勧めするものです。オプションのセレクターを変更して、('#mySelect option:last')「」を使用して特定の値を持つオプションを選択できます#mySelect option[value='yourDefaultValue']セレクターの詳細

クライアントで選択リストを広範囲に使用している場合は、次のプラグインを確認してください: http ://www.texotela.co.uk/code/jquery/select/ 。選択リストの操作の例をさらに見たい場合は、ソースを参照してください。

于 2008-09-29T17:51:55.963 に答える
9

選択したオプションを変更する関数は次のとおりです。jQuery 1.3.2で動作します

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}
于 2009-10-30T12:25:17.840 に答える
7
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
于 2009-12-09T11:59:56.667 に答える
3

前述のtexotela プラグインに既に遭遇しました。これにより、次のように解決できます。

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});
于 2008-09-29T18:06:40.827 に答える
3

簡単!デフォルトは最初のオプションです。終わり!JavaScriptは必要ないので、控えめなJavaScriptになります:)

控えめな JavaScript

于 2009-12-04T16:27:10.693 に答える
2

要素のselectedIndexを見てください。selectところで、これは単純な DOM の話であり、JQuery 固有のものではありません。

于 2008-09-29T16:51:26.933 に答える
2

これは私が見つけた簡単なスクリプトでした... .結果はラベルに割り当てられます。

$(".Result").html($("option:selected").text());
于 2009-10-30T21:38:08.177 に答える
1
if (!$("#select").find("option:selected").length){
  //
}
于 2013-08-21T09:48:00.890 に答える
0
$("#select_box_id").children()[1].selected

これは、jqueryでオプションが選択されているかどうかを確認する別の方法です。これにより、ブール値(TrueまたはFalse)が返されます。

[1]は選択ボックスオプションのインデックスです

于 2012-04-02T07:32:33.500 に答える
0

私はちょうど似たようなものを探していて、これを見つけました:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

これにより、クラス内でまだオプションが選択されていないすべての選択メニューが検索され、デフォルトのオプション (この場合は「2」) が選択されます。

:selectedの代わりに使用してみ[selected]ましたが、属性が何もなくても常に何かが選択されているため、機能しませんでした

于 2014-04-22T19:59:34.400 に答える
0
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
于 2010-08-15T12:18:31.737 に答える