it-swarm.com.de

Überprüfen Sie, ob die Option mit jQuery ausgewählt ist, wenn Sie keine Standardeinstellung auswählen

Wie können Sie mit jQuery prüfen, ob in einem Auswahlmenü eine Option ausgewählt ist, und wenn nicht, eine der Optionen als ausgewählt zuweisen?.

(Die Auswahl wird mit einem Labyrinth von PHP Funktionen in einer App generiert, die ich gerade geerbt habe. Dies ist also eine schnelle Lösung, während ich mich um diese kümmere. :)

204
meleyal

Ich bin mir zwar nicht sicher, was genau Sie erreichen wollen, aber dieser Code hat bei mir funktioniert.

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

Dafür muss jQuery nicht verwendet werden:

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

Diese Frage ist alt und hat eine Menge Ansichten, also werfe ich einfach ein paar Sachen raus, die einigen Leuten helfen, da bin ich mir sicher.

So überprüfen Sie, ob ein ausgewähltes Element ausgewählte Elemente enthält:

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

oder um zu überprüfen, ob für eine Auswahl nichts ausgewählt ist:

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

oder wenn Sie sich in einer Schleife befinden und prüfen möchten, ob das aktuelle Element ausgewählt ist:

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

so überprüfen Sie, ob in einer Schleife kein Element ausgewählt ist:

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

Dies sind einige der Möglichkeiten, dies zu tun. jQuery bietet viele verschiedene Möglichkeiten, um dasselbe Ziel zu erreichen. Wählen Sie daher in der Regel die effizienteste Methode aus.

13
Gavin

Lencionis Antwort ist das, was ich empfehlen würde. Sie können den Selektor für die Option ('#mySelect option:last') Ändern, um die Option mit einem bestimmten Wert mit "#mySelect option[value='yourDefaultValue']" Auszuwählen. Mehr zu Selektoren .

Wenn Sie intensiv mit Auswahllisten auf dem Client arbeiten, sehen Sie sich dieses Plugin an: http://www.texotela.co.uk/code/jquery/select/ . Schauen Sie sich die Quelle an, wenn Sie weitere Beispiele für die Arbeit mit Auswahllisten sehen möchten.

12

Hier ist meine Funktion, die die ausgewählte Option ändert. 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');   
}
9
sata
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
7
Ram Prasad

Einfach! Die Standardeinstellung sollte die erste Option sein. Fertig! Das würde zu unauffälligem JavaScript führen, da JavaScript nicht benötigt wird :)

nauffälliges JavaScript

3

Ich bin bereits auf das erwähnte texotela plugin gestoßen, mit dem ich es so lösen konnte:

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

Schauen Sie sich das selectedIndex des select -Elements an. Übrigens, das ist eine reine DOM-Sache, nicht JQuery-spezifisch.

2
Hank Gay

Dies war ein schnelles Skript, das funktioniert hat. Das Ergebnis ist einem Label zugewiesen.

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

Ihr macht viel zu viel für die Auswahl. Einfach nach Wert auswählen:

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

Ich habe eine gute Möglichkeit gefunden, um zu überprüfen, ob die Option ausgewählt ist, und eine Standardeinstellung auszuwählen, wenn dies nicht der Fall 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 die Option nicht standardmäßig ausgewählt hat, ist . Val () undefiniert

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

Wenn Sie jede Option explizit markieren müssen, um festzustellen, ob eine das Attribut "selected" hat, können Sie dies tun. Ansonsten mit option:selected Sie erhalten den Wert für die erste Standardoption.

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

Ich habe nur nach etwas Ähnlichem gesucht und folgendes gefunden:

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

Dadurch werden alle Auswahlmenüs in der Klasse gefunden, für die noch keine Option ausgewählt ist, und die Standardoption (in diesem Fall "2") wird ausgewählt.

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

0
Steven Schoch

Ändern Sie das Ereignis im Auswahlfeld, um es auszulösen, und ziehen Sie dann einfach das ID-Attribut der ausgewählten Option:

$("#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

Dies ist eine andere Möglichkeit, zu überprüfen, ob eine Option in jquery ausgewählt ist oder nicht. Das wird Boolean (True oder False) zurückgeben.

[1] ist der Index der Auswahlfeldoption

0