我有几个单选按钮,我想阻止按下向上/向下箭头键来更改选定的单选按钮。
如果您选择其中一个单选按钮,然后按向上/向下箭头键,它将选择上一个或下一个单选按钮。相反,我希望选择保持不变。为此我可以使用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/ http://jsfiddle.net/w0jh9ney/
这个想法是把焦点从input
并防止默认行为input
keydown
事件处理程序:
Fiddle http://jsfiddle.net/w0jh9ney/5/.
$('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 http://jsfiddle.net/w0jh9ney/6/.
$('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;
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)