我之前得到了here的帮助,原因是传播问题,但我现在尝试在输入上使用HTML5 autofocus,现在我的代码中断了。
这是我正在使用的代码:
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(':not(form)').keydown(function(event) {
$j('form').keydown(function(event) {
event.stopPropagation();
});
if(event.keyCode==82) {
$j(document).trigger(location.href = '/?random')
}
});
</script>
基本上,我设置了一些键盘导航。如果按R键,则会转到随机页面。
当用户在表单/输入框中键入时,我试图禁用该功能,原因很明显。当我尝试使用自动对焦时,此代码有效。如果您开始在页面加载中右键输入,并且您键入的第一个字母是R,则会转到随机页面。
如果先输入另一个字母,那么R将作为普通字母输入。我是这种东西的新手,所以任何帮助都非常感谢!感谢。
编辑:经过进一步测试,看起来问题可能不是自动对焦,但主要是当输入的第一个字母是R时,它就会出错。答案 0 :(得分:0)
你的选择器“not”不正确。
<script type="text/javascript">
$(document).ready(function(){
$('body').keydown(function(event) {
if(event.keyCode==82) {
$(document).trigger(location.href = '/?random')
}
});
$('input, textarea').keydown(function(){
event.stopPropagation();
});
});
</script>
答案 1 :(得分:0)
问题是,每次在任何其他元素上调用keydown时,您都会向表单元素添加keydown事件。
尝试一下..我改变了你的JS ......
以下是小提琴的代码:
HTML:
<form>
<input type="text" autofocus />
<input type="text" />
<input type="text" />
<input type="text" />
<textarea></textarea>
<div id="results">
</div>
</form>
JS
var $j = jQuery.noConflict();
$j(document).keydown(function(event) {
var key = event.keyCode | event.which;
if(key==82) {
$j('#results').append($j('<div>pressed: r</div>'));
}
});
$j('input, textarea').keydown(function(event) {
event.stopPropagation();
});