Compruebe si la opción está seleccionada con jQuery, si no, seleccione un valor predeterminado

StackOverflow https://stackoverflow.com/questions/149573

Pregunta

Usando jQuery, ¿cómo verifica si hay una opción seleccionada en un menú de selección y, si no, asigna una de las opciones seleccionadas?

(La selección se genera con un laberinto de funciones PHP en una aplicación que acabo de heredar, por lo que esta es una solución rápida mientras comprendo esos :)

¿Fue útil?

Solución

Si bien no estoy seguro de qué es exactamente lo que quieres lograr, este código funcionó para mí.

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

Otros consejos

No es necesario usar jQuery para esto:

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

Esta pregunta es antigua y tiene muchas opiniones, así que simplemente arrojaré algunas cosas que ayudarán a algunas personas, estoy seguro.

Para verificar si un elemento seleccionado tiene elementos seleccionados:

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

o para verificar si una selección no tiene nada seleccionado:

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

o si está en un bucle de algún tipo y desea verificar si el elemento actual está seleccionado:

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

para verificar si un elemento no está seleccionado mientras está en un bucle:

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

Estas son algunas de las formas de hacer esto. jQuery tiene muchas formas diferentes de lograr lo mismo, por lo que generalmente solo debes elegir cuál parece ser la más eficiente.

lencioni's responder es lo que recomendaría. Puede cambiar el selector de la opción ('#mySelect option: last') para seleccionar la opción con un valor específico usando " #mySelect option [value = 'yourDefaultValue'] " ;. Más sobre selectores .

Si está trabajando extensamente con listas seleccionadas en el cliente, consulte este complemento: http://www.texotela.co.uk/code/jquery/select/ . Eche un vistazo a la fuente si desea ver más ejemplos de cómo trabajar con listas seleccionadas.

Aquí está mi función cambiando la opción seleccionada. Funciona para 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>

¡Fácil! El valor predeterminado debería ser la primera opción. ¡Listo! Eso lo llevaría a un JavaScript discreto, porque JavaScript no es necesario :)

JavaScript no intrusivo

Ya me encontré con el plugin texotela mencionado, lo que me permitió resuélvelo así:

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

Mire el selectedIndex del elemento select . Por cierto, eso es una simple cosa de DOM, no específica de JQuery.

Este fue un script rápido que encontré que funcionó ... .Result se asigna a una etiqueta.

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

Ustedes están haciendo demasiado para seleccionar. Simplemente seleccione por valor:

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

Encontré una buena manera de verificar si la opción está seleccionada y seleccionar una predeterminada cuando no lo está.

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

Si #some_select no tiene la opción seleccionada por defecto, entonces .val () es undefined

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

Esta es otra forma de verificar si una opción está seleccionada o no en jquery. Esto devolverá booleano (verdadero o falso).

[1] es el índice de la opción de cuadro de selección

Cambie el evento en el cuadro de selección para que se active y, una vez que lo haga, simplemente extraiga el atributo de identificación de la opción seleccionada: -

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

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

Estaba buscando algo similar y encontré esto:

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

Esto encuentra todos los menús de selección en la clase que aún no tienen una opción seleccionada, y selecciona la opción predeterminada (" 2 " en este caso).

Intenté usar : selected en lugar de [selected] , pero eso no funcionó porque siempre se selecciona algo, incluso si nada tiene el atributo

Si necesita verificar explícitamente cada opción para ver si alguna tiene el " seleccionado " atributo puedes hacer esto. De lo contrario, utilizando la opción : seleccionado obtendrá el valor de la primera opción predeterminada.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top