我有几个单选按钮,但我想防止按下向上/向下箭头键来更改所选的单选按钮。
如果选择一个单选按钮,然后按上/下箭头键,它将选择上一个或下一个单选按钮。相反,我希望选择保持不变。为此,我可以在某些按键上使用event.preventDefault();
。但是,我仍然希望用户能够通过按箭头键在页面上上下滚动。
我怎么做?
单选按钮:
<label>Value
<input type="radio" name="myradiobtn" value="value1">
</label>
<label>Value
<input type="radio" name="myradiobtn" value="value2">
</label>
<label>Value
<input type="radio" name="myradiobtn" value="value3">
</label>
<label>Value
<input type="radio" name="myradiobtn" value="value4">
</label>
<label>Value
<input type="radio" name="myradiobtn" value="value5">
</label>
Javascript尝试(不起作用):
$(document).keydown(function(e) {
var arrowKeys = [37,38,39,40];
if (arrowKeys.indexOf(e.which) !== -1) {
$('input[type="radio"]').each(function( index ) {
$(this).blur();
});
}
});
JsFiddle:
http://jsfiddle.net/w0jh9ney/
最佳答案
这个想法是从input
上移开焦点并防止input
keydown
事件处理程序中的默认行为:
Fiddle。
$('input[type="radio"]').keydown(function(e)
{
var arrowKeys = [37, 38, 39, 40];
if (arrowKeys.indexOf(e.which) !== -1)
{
$(this).blur();
return false;
}
});
@ user3346601解决方法提到无法在第一个
keydown
上滚动:Fiddle。
$('input[type="radio"]').keydown(function(e)
{
var arrowKeys = [37, 38, 39, 40];
if (arrowKeys.indexOf(e.which) !== -1)
{
$(this).blur();
if (e.which == 38)
{
var y = $(window).scrollTop();
$(window).scrollTop(y - 10);
}
else if (e.which == 40)
{
var y = $(window).scrollTop();
$(window).scrollTop(y + 10);
}
return false;
}
});
关于javascript - 防止箭头键更改所选的单选按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25972870/