Javascript 值更改后如何跳转到下一个下拉列表?
假设我一行有大约20个下拉列表,希望在用键盘更改值后自动跳转到下一个。如何做到这一点? 我发现onchange事件只有在下拉菜单失去焦点时才会触发(比如onblur)。因此,我尝试了onkeydown,但这似乎非常不稳定和有问题 这就是我所尝试的:Javascript 值更改后如何跳转到下一个下拉列表?,javascript,html,select,onchange,onkeydown,Javascript,Html,Select,Onchange,Onkeydown,假设我一行有大约20个下拉列表,希望在用键盘更改值后自动跳转到下一个。如何做到这一点? 我发现onchange事件只有在下拉菜单失去焦点时才会触发(比如onblur)。因此,我尝试了onkeydown,但这似乎非常不稳定和有问题 这就是我所尝试的: <script> function keydown(dd, e) { console.log(dd.value) jumptonext(dd); } function getNext(current) { var
<script>
function keydown(dd, e) {
console.log(dd.value)
jumptonext(dd);
}
function getNext(current) {
var all = document.querySelectorAll('select[onkeydown]');
for (var i = 0; i < all.length; i++) {
if (all[i] == current && all[i+1]) return all[i+1];
}
return all[0];
}
function jumptonext(current) {
var next = getNext(current);
next.focus();
}
</script>
<select onkeydown="keydown(this, event)">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select onkeydown="keydown(this, event)">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select onkeydown="keydown(this, event)">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select onkeydown="keydown(this, event)">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
功能键控(dd,e){
console.log(dd.value)
jumptonext(dd);
}
函数getNext(当前){
var all=document.querySelectorAll('select[onkeydown]');
对于(变量i=0;i
但正如您在控制台日志中看到的,这些值是不正确的
有没有办法用键盘更改下拉列表的值,然后跳转到下一个下拉列表并执行相同的操作?设置一些间隔函数,检查所有选择的当前值,例如10毫秒。如果其中一个的值已更改-查看是什么,并将焦点移动到下一个选择
// define array of current values
var values = new Array();
// here fill it with values of your selects
setInterval(function(){
// here check if some value was changed
// if there is one changed
// set the new value into array as a current one
// jump to next select with .focus()
},10);
我想这对你的老板来说已经足够了
也许您还需要对当前的一个进行.blur()处理(只是一个猜测)
很抱歉,但这似乎是唯一一种丑陋的方法。您可以通过jquery处理它 我用它来按标签 }))
我认为这个代码没问题,你需要做一些修改 你为什么想要这个?如果我用的是键盘,那么我不希望它在我这样切换时跳转,因为我可以使用向下箭头在选项之间切换。当我完成后,我会按[Tab]进入下一个选项。因为我的老板正想这样做。我对这个决定不是很满意,但他想要这样,所以我不得不这样做——无论如何。好吧,试着向他解释一下功能的缺乏。如果没有,您是否尝试过键控?
$('body').on('keydown', 'input, select, textarea', function(e) {
var self = $(this)
, form = self.parents('form:eq(0)')
, focusable
, next
;
$('.dropBpx').change(function(){
focusable = form.find('input,a,select,button,textarea').filter(':visible');
next = focusable.eq(focusable.index(this)+1);
if (next.length) {
next.focus();
} else {
form.submit();
}
return false;
});