这似乎应该是非常容易做到的事情,但它是在清晨,我正在画一个空白。
我有一个包含%值的选择(用于缩放),并且将其作为下拉列表我希望有两个按钮(+和 - )来遍历列表。
假设我有:
<button id="minusButton">-</button>
<select id="zoomSelect" onchange="zoom()">
<option value="10">10%</option>
<option value="20">20%</option>
<option value="50">50%</option>
<option value="100" selected="selected">100%</option>
</select>
<button id="plusButton">+</button>
每次按下按钮时,如何切换选择。同时确保它在100%和10%时很好地停止(即,如果我继续按+,则不会缠绕或抛出错误。)
非常感谢!
答案 0 :(得分:1)
$(document).on('click', '#minusButton', function() {
var selIndex = $("#zoomSelect").prop('selectedIndex');
if (selIndex != 0) {
$("#zoomSelect").val($('#zoomSelect option').eq(selIndex - 1).val());
zoom();
}
});
$(document).on('click', '#plusButton', function() {
var selIndex = $("#zoomSelect").prop('selectedIndex');
if (selIndex != $('#zoomSelect option').length - 1) {
$("#zoomSelect").val($('#zoomSelect option').eq(selIndex + 1).val());
zoom();
}
});
function zoom() {
console.log('zoomed');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="minusButton">-</button>
<select id="zoomSelect" onchange="zoom()">
<option value="10">10%</option>
<option value="20">20%</option>
<option value="50">50%</option>
<option value="100" selected="selected">100%</option>
</select>
<button id="plusButton">+</button>
点击事件可以这样写,以便更改选择框的值,并相应地触发缩放功能。
答案 1 :(得分:1)
纯JS回答
基本上你需要获得selectedIndex
并设置该索引。
document.getElementById("zoomSelect").selectedIndex
将获取当前选择的索引,您可以根据加号或减号进行设置。
function zoom(isPlus) {
var zoomSelect = document.getElementById("zoomSelect");
var index = zoomSelect.selectedIndex;
var length = zoomSelect.length;
if (isPlus && (index < length - 1)) {
zoomSelect.selectedIndex = index + 1;
} else if (!isPlus && (index > 0)) {
zoomSelect.selectedIndex = index - 1;
}
}
<button id="minusButton" onclick="zoom(false)">-</button>
<select id="zoomSelect" onchange="zoom()">
<option value="10">10%</option>
<option value="20">20%</option>
<option value="50">50%</option>
<option value="100" selected="selected">100%</option>
</select>
<button id="plusButton" onclick="zoom(true)">+</button>
答案 2 :(得分:1)
您可以使用selectedIndex
来处理所选项目,例如
var $zoom = $('#zoomSelect'),
len = $zoom.find('option').length;;
jQuery('#plusButton, #minusButton').click(function() {
var op = (this.id === 'minusButton' ? -1 : 1);
$zoom.prop('selectedIndex', function(idx, value) {
var x = value + op;
return x < 0 || x > len - 1 ? value : x;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="minusButton">-</button>
<select id="zoomSelect" onchange="zoom()">
<option value="10">10%</option>
<option value="20">20%</option>
<option value="50">50%</option>
<option value="100" selected="selected">100%</option>
</select>
<button id="plusButton">+</button>
答案 3 :(得分:0)
找到一个副本,并附上答案 - Choose option from select list using next/previous button with jquery
所以这可以关闭。