デフォルトが選択されていない場合、jQueryでオプションが選択されているかどうかを確認します
-
02-07-2019 - |
質問
jQueryを使用して、選択メニューでオプションが選択されているかどうかを確認し、そうでない場合は、オプションの1つを選択済みとして割り当てます。
(selectは、継承したばかりのアプリの迷路のPHP関数で生成されるため、これらの問題に頭を悩ませている間、これは簡単な修正です:)
解決
あなたが何を達成したいのか正確にはわからないが、このコードは私にとってはうまくいった。
<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>
他のヒント
このためにjQueryを使用する必要はありません:
var foo = document.getElementById('yourSelect');
if (foo)
{
if (foo.selectedIndex != null)
{
foo.selectedIndex = 0;
}
}
この質問は古いものであり、多くの見解を持っているので、私が確信している一部の人々を助けるいくつかのものをそこに放り投げます。
select要素に選択されたアイテムがあるかどうかを確認するには:
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には同じことを達成するためのさまざまな方法があるため、通常は最も効率が良いと思われる方法を選択します。
lencioni's answer がお勧めです。オプション( '#mySelect option:last')
のセレクターを変更して、&quot; #mySelect option [value = 'yourDefaultValue'] を使用して特定の値を持つオプションを選択できます。 code>&quot;。 セレクターの詳細。
クライアントで選択リストを広範囲に使用している場合は、このプラグインを確認してください。 http://www.texotela.co.uk/code/jquery/select/ 。選択リストの使用例がさらに見たい場合は、ソースをご覧ください。
選択したオプションを変更する機能を次に示します。 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');
}
<script type="text/javascript">
$(document).ready(function() {
if (!$("#mySelect option:selected").length)
$("#mySelect").val( 3 );
});
</script>
簡単!デフォルトは最初のオプションです。 完了! JavaScriptは必要ないため、控えめなJavaScriptにつながるでしょう:)
既に texotelaプラグインに出会ったので、次のように解決します:
$(document).ready(function(){
if ( $("#context").selectedValues() == false) {
$("#context").selectOptions("71");
}
});
select
要素の selectedIndex を見てください。 。ところで、それはJQuery固有ではなく、単純なol 'DOMのことです。
これは私が見つけた簡単なスクリプトでした... 結果はラベルに割り当てられます。
$(".Result").html($("option:selected").text());
君たちは選択するのにやりすぎだ。値で選択するだけです:
$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
//
}
オプションが選択されているかどうかを確認し、選択されていない場合はデフォルトを選択する良い方法を見つけました。
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()は undefined
です$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected
これは、jqueryでオプションが選択されているかどうかを確認する別の方法です。これはブール値(TrueまたはFalse)を返します。
[1]は選択ボックスオプションのインデックスです
選択ボックスのイベントを起動するように変更し、イベントが発生したら、選択したオプションのid属性を取得するだけです:-
$("#type").change(function(){
var id = $(this).find("option:selected").attr("id");
switch (id){
case "trade_buy_max":
// do something here
break;
}
});
似たようなものを探していたところ、これが見つかりました:
$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);
これにより、オプションが選択されていないクラス内のすべての選択メニューが検索され、デフォルトのオプション(この場合は&quot; 2&quot;)が選択されます。
[selected]
の代わりに:selected
を使用しようとしましたが、属性がなくても常に選択されているため動作しませんでした
各オプションを明示的にチェックして、「選択」されているオプションがあるかどうかを確認する必要がある場合これを行うことができる属性。それ以外の場合は、 option:selected
を使用して、最初のデフォルトオプションの値を取得します。
var viewport_selected = false;
$('#viewport option').each(function() {
if ($(this).attr("selected") == "selected") {
viewport_selected = true;
}
});