Frage

Mit jQuery, wie Sie überprüfen, ob es eine Option in einem Auswahlmenü ausgewählt ist, und wenn nicht, eine der Optionen zuweisen ausgewählt ist.

(Die Auswahl wird in einer App mit einem Labyrinth von PHP-Funktionen erzeugt ich nur geerbt hat, so ist dies eine schnelle Lösung, während ich meinen Kopf um jenen:)

War es hilfreich?

Lösung

Während ich genau bin nicht sicher, was Sie erreichen wollen, ist dieses Stück Code für mich gearbeitet.

<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>

Andere Tipps

Keine Notwendigkeit zu verwenden jQuery für diese:

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

Diese Frage ist alt und viel Aussicht hat, also werde ich einfach ein paar Sachen werfen es, dass einige Leute helfen werde ich sicher bin.

Um zu überprüfen, ob ein select-Element alle ausgewählten Elemente hat:

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

oder zu überprüfen, ob ein Auswahl hat nichts ausgewählt:

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

oder wenn Sie in einer Schleife von einer Art sind und überprüfen möchten, ob das aktuelle Element ausgewählt ist:

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

um zu überprüfen, ob ein Element nicht, während in einer Schleife ausgewählt ist:

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

Dies sind nur einige der Möglichkeiten, dies zu tun. jQuery hat viele verschiedene Möglichkeiten, die gleiche Sache erreichen, so dass Sie in der Regel nur wählen, welche die effizienteste zu sein scheinen.

Lencioni ist Antwort ist, was ich empfehlen würde. Sie können die Wähler für die Option ('#mySelect option:last') ändern Sie die Option mit einem bestimmten Wert mit „#mySelect option[value='yourDefaultValue']“ zu wählen. Mehr über Selektoren .

Wenn Sie sich intensiv mit Auswahllisten auf dem Client arbeiten, um dieses Plugin Check-out: http://www.texotela.co.uk/code/jquery/select/ . Nehmen Sie ein, die Quelle aussehen, wenn Sie einige weitere Beispiele für die Arbeit mit Auswahllisten angezeigt werden sollen.

Hier ist meine Funktion, um die gewählte Option zu ändern. Es funktioniert für 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>

Easy! Der Standard sollte die erste Option sein. Fertig Das würde Sie unaufdringlich JavaScript führen, weil JavaScript ist nicht erforderlich!)

Dezente JavaScript

Ich kam schon über die texotela Plugin erwähnt, die mich lassen lösen es wie folgt aus:

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

Sehen Sie sich die selectedIndex des select Element. BTW, das ist eine einfache ol DOM Sache, nicht JQuery spezifisch.

Das war eine schnelle Skript Ich fand, dass gearbeitet ... .RESULT ist mit einem Label versehen.

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

Ihre Jungs machen viel zu viel für die Auswahl. Wählen Sie einfach nach Wert:

$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
  //
}

fand ich eine gute Möglichkeit, zu überprüfen, ob Option ausgewählt ist und eine Standard wählen, wenn es nicht ist.

    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>');
    }

Wenn #some_select has't Standard gewählte Option dann .val () ist undefined

$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected

Dies ist ein weiterer Weg, um eine Möglichkeit zu überprüfen, ausgewählt ist oder nicht in jquery. Dies wird wieder Boolean (True oder False).

[1] Index der Auswahlbox Option

Change-Ereignis auf dem Auswahlfeld zu schießen und wenn es nicht dann zieht nur das id-Attribut der gewählten Option: -

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

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

Ich war gerade auf der Suche nach etwas ähnlichem und fand diese:

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

Dies findet alle Auswahlmenüs in der Klasse, die eine Option ausgewählt nicht bereits hat, und wählt die Standardoption ( „2“ in diesem Fall).

Ich habe versucht, mit :selected statt [selected], aber das hat nicht funktioniert, weil etwas ist immer ausgewählt, auch wenn nichts das Attribut

Wenn Sie explizit jede Option überprüfen, um zu sehen, ob die „ausgewählt“ haben Attribut können Sie dies tun. Andernfalls mit option:selected Sie den Wert für die erste Standardoption erhalten.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top