2012-07-19 9 views
19

Estoy intentando crear un botón que pueda seleccionar la siguiente opción.Seleccione la siguiente opción con jQuery

lo tanto, tengo una selecta (id = selectionChamp) con varias opciones, una entrada próxima (id = fieldNext), y trato de hacer eso:

$('#fieldNext').click(function() { 
    $('#selectionChamp option:selected', 'select').removeAttr('selected') 
      .next('option').attr('selected', 'selected'); 

    alert($('#selectionChamp option:selected').val());  
}); 

pero no puedo seleccionar la siguiente opción .. Gracias !

+0

¿Está cargando DOM en la carga de la página? – Dev

+0

¿Qué quieres decir? –

+0

significa que estás usando ese código en la función lista? – Dev

Respuesta

22
$('#fieldNext').click(function() { 
    $('#selectionChamp option:selected').next().attr('selected', 'selected'); 

    alert($('#selectionChamp').val());  
}); 
+1

Roto en FF 32.0.3 – njahnke

+4

También es necesario deseleccionar la opción actual, p. '$ ('# selectionChamp option: selected'). attr ('selected', false);' – anthonygore

+0

yeah ... pero solo si se configuran múltiples atributos en la etiqueta select. Sin embargo, puede actualizar la respuesta si lo desea para ... – bugwheels94

0
$('#fieldNext').click(function() { 
$('#selectionChamp option:selected').removeAttr('selected') 
     .next('option').attr('selected', 'selected'); 

alert($('#selectionChamp option:selected').val());  
}); 
12
$("#fieldNext").click(function() { 
    $("#selectionChamp > option:selected") 
     .prop("selected", false) 
     .next() 
     .prop("selected", true); 
});​ 

DEMO:http://jsfiddle.net/w9kcd/1/

0

Prueba esto:

$(document).ready(function(){ 
     $("#fieldNext").on("click",function(){ 
      $optionSelected = $("#selectionChamp > option:selected"); 
      $optionSelected.removeAttr("selected"); 
      $optionSelected.next("option").attr("selected","selected");  
     }); 
    }); 
2
$(function(){ 
    $('#button').on('click', function(){ 
    var selected_element = $('#selectionChamp option:selected'); 
    selected_element.removeAttr('selected'); 
    selected_element.next().attr('selected', 'selected'); 

    $('#selectionChamp').val(selected_element.next().val()); 

    }); 
}); 

http://jsbin.com/ejunoz/2/edit

8

Bastante simple sin jQuery también. Este bucle de una sola voluntad en torno a la primera opción una vez que la última se alcanza:

function nextOpt() { 
    var sel = document.getElementById('selectionChamp'); 
    var i = sel.selectedIndex; 
    sel.options[++i%sel.options.length].selected = true; 
} 

window.onload = function() { 
    document.getElementById('fieldNext').onclick = nextOpt; 
} 

Algunas marcas de prueba:

<button id="fieldNext">Select next</button> 
<select id="selectionChamp"> 
<option>0 
<option>1 
<option>2 
</select> 
+0

+1. ¡Has publicado algunas buenas soluciones JS de vanilla! ¡Ayuda mucho! – A1rPun

0

Las otras soluciones no funcionan en caso de que haya optiongroup elementos, además de la opción elementos. En ese caso, esto parece funcionar:

var options = $("#selectionChamp option"); 
var i = options.index(options.filter(":selected")); 
if (i >= 0 && i < options.length - 1) { 
    options.eq(i+1).prop("selected", true); 
} 

(Usted puede pensar que la expresión para i también podría escribirse como options.index(":selected"), pero eso no siempre funciona no sé por qué, una explicación haría. sea ​​bienvenido.)

Cuestiones relacionadas