28

次のオプションを選択できるボタンを作成しようとしています。

だから、私はいくつかのオプション、次の入力(id = fieldNext)を持つ選択(id = selectionChamp)を持っています、そして私はそれをやろうとします:

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

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

しかし、次のオプションを選択できません..ありがとう!

4

8 に答える 8

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

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

@VisioN によるより良い回答: https://stackoverflow.com/a/11556661/1533609

于 2012-07-19T08:15:57.937 に答える
22
$("#fieldNext").click(function() {
    $("#selectionChamp > option:selected")
        .prop("selected", false)
        .next()
        .prop("selected", true);
});​

デモ: http://jsfiddle.net/w9kcd/1/

于 2012-07-19T08:17:35.650 に答える
10

jQueryがなくてもかなりシンプルです。これは、最後のオプションに到達すると、最初のオプションにループします。

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

いくつかのテスト マークアップ:

<button id="fieldNext">Select next</button>
<select id="selectionChamp">
 <option>0
 <option>1
 <option>2
</select>
于 2012-07-19T08:39:57.883 に答える
3
$(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

于 2012-07-19T08:24:19.373 に答える
0

これを試して :

    $(document).ready(function(){
        $("#fieldNext").on("click",function(){
            $optionSelected = $("#selectionChamp > option:selected");
            $optionSelected.removeAttr("selected");
            $optionSelected.next("option").attr("selected","selected");       
        });
    });
于 2012-07-19T08:18:11.847 に答える
0
$('#fieldNext').click(function() {
$('#selectionChamp option:selected').removeAttr('selected')
      .next('option').attr('selected', 'selected');

alert($('#selectionChamp option:selected').val());      
});
于 2012-07-19T08:17:19.897 に答える
0

option 要素に加えて optiongroup 要素がある場合、他のソリューションは機能しません。その場合、これはうまくいくようです:

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

i( for の式は のようにも書けると思うかもしれoptions.index(":selected")ませんが、常にうまくいくとは限りません。理由はわかりません。説明を歓迎します。)

于 2013-11-08T14:17:06.500 に答える