web-dev-qa-db-ja.com

デフォルトが選択されていない場合、jQueryでオプションが選択されているか確認してください

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

(selectは私が継承したばかりのアプリのPHP関数の迷路で生成されるので、私はそれらを頭に入れている間これは簡単な修正です:)

203
meleyal

あなたが何を達成したいのか正確にはわかりませんが、このコードは私にとって役に立ちました。

<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>
264
Joe Lencioni

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

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}
29
FlySwat

この質問は古く、多くの見解を持っているので、私は確信している何人かの人々を助けるであろうものをそこに捨てるだけです。

Select要素に選択項目があるかどうかを確認するには

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

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

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には同じことを実行するためのさまざまな方法があるので、通常はどちらが最も効率的であるかを選択するだけです。

12
Gavin

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

クライアントの選択リストを広範囲に扱っている場合は、このプラグインを調べてください。 http://www.texotela.co.uk/code/jquery/select/ 。選択リストを扱う他の例を見たい場合は、ソースを調べてください。

11

これが私の選択したオプションを変更する機能です。 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');   
}
9
sata
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
7
Ram Prasad

簡単!デフォルトが最初のオプションです。 完了!JavaScriptは必要ないので、目立たないJavaScriptに導きます。

控えめなJavaScript

3

私はすでに述べた texotelaプラグイン に出くわしました。

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});
3
meleyal

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

2
Hank Gay

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

$(".Result").html($("option:selected").text());
2
Joel

あなたたちは選択のためにやり過ぎています。値で選択するだけです。

$("#mySelect").val( 3 );
1
giagejoe

オプションが選択されているかどうかを確認し、選択されていない場合はデフォルトを選択するとよいでしょう。

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

#some_selectがデフォルトで選択されたオプションではない場合、。val()未定義です

1
Marcin Bąk
if (!$("#select").find("option:selected").length){
  //
}
1
Avinash Saini
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
0
user420944

各オプションに「selected」属性があるかどうかを明示的に確認する必要がある場合は、これを実行できます。それ以外の場合はoption:selectedを使用して、最初のデフォルトオプションの値を取得します。

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
0
zeman

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

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

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

私は:selectedの代わりに[selected]を使用しようとしました、しかし、何も属性を持っていなくても何かが常に選択されているのでそれはうまくいきません

0
Steven Schoch

選択ボックスのイベントを起動するように変更し、起動したら、選択されたオプションのid属性を取得します -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});
0
$("#select_box_id").children()[1].selected

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

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

0