2012-07-19 14 views
19

Ich versuche, eine Schaltfläche erstellen, die nächste Option auswählen kann.Wählen Sie die nächste Option mit jQuery

Also, ich habe eine select (id = selectionChamp) mit mehreren Optionen, einen Eingang neben (id = fieldNext), und ich versuche, das zu tun:

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

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

Aber ich kann die nächste Option nicht wählen .. Vielen Dank !

+0

Laden Sie DOM beim Laden der Seite? – Dev

+0

Was meinst du? –

+0

bedeutet, verwenden Sie diesen Code in der fertigen Funktion? – Dev

Antwort

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

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

Eingebrochen FF 32.0.3 – njahnke

+4

Braucht auch die aktuelle Option, z. '$ ('# selectionChamp option: selected'). attr ('ausgewählt', false);' – anthonygore

+0

yeah ... aber nur wenn mehrere Attribute auf select tag gesetzt sind. Es steht Ihnen frei, die Antwort zu aktualisieren, wenn Sie wollen zu .... – 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

Versuchen Sie folgendes:

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

Ziemlich einfach ohne jQuery auch. Dieser wird Schleife um auf die erste Option, sobald die letzte erreicht:

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

Einige Test Markup:

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

+1. Sie haben einige gute Vanilla JS Lösungen gepostet! Hilft viel! – A1rPun

0

Die anderen Lösungen nicht funktionieren, falls es Option Elemente zusätzlich zu Option Elemente. In diesem Fall scheint dies zu funktionieren:

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

(Sie mögen denken, dass der Ausdruck für i auch als options.index(":selected") geschrieben werden kann, aber das funktioniert nicht immer, ich weiß nicht, warum, eine Erklärung würde. sei willkommen.)