Vis*_*hnu 22 javascript jquery
我想检测输入中的Control+ A事件.我可以找到Control+ A事件,但功能仍在继续return false
.
jsFiddle - http://jsfiddle.net/f6rcgpmh/4/
$('.searchTerm').keyup(function(e) {
$("#status").text("");
if (e.ctrlKey) {
if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
console.log("Control pressed");
e.preventDefault();
return false;
}
}
$("#status").text("This should not work if Ctrl + A is pressed");
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="search" class="search">
<input class="searchTerm" placeholder="Filter Books...">
<input class="searchButton" type="submit">
</form>
<div id="status"></div>
Run Code Online (Sandbox Code Playgroud)
我希望这个keyup
不在keydown
.因为我使用自动搜索,我不想在keyrelease之前调用函数.并且当Ctrl+ A返回false时,+ 也不会突出显示keydown中的文本.
Kai*_*ido 16
实际上功能停止了.您遇到的是两个键盘事件触发:一个来自ctrl和一个来自A.
第一个按预期返回,因为它确实填满了要求:ctrlKey == true
和keyCode == 65 || keyCode == 97
.
但是第二个,只会按下一个键,因此两个语句不能同时出现:
如果你上次发布了ctrl,那么ctrlKey
是真的,但事实keyCode == 65 || keyCode == 97
并非如此.
如果你上次发布了A,那么ctrlKey
现在是假的.
然后#status
运行设置为错误消息的行.
实际上并非如此.您必须将活动从更改'keyup'
为'keydown'
.然后再试一次.你可以检查这个小提琴.http://jsfiddle.net/ebilgin/f6rcgpmh/5/
如果需要控制自动完成,则必须在发送数据之前放置控件.
Ctrl键盘事件触发器会导致您的问题.我为你的代码添加了另一个条件,
if (e.keyCode == 17) // Ctrl key, fires at Ctrl's keyup.
return false;
Run Code Online (Sandbox Code Playgroud)
你可以查看我的新小提琴,http://jsfiddle.net/ebilgin/f6rcgpmh/10/.
归档时间: |
|
查看次数: |
12644 次 |
最近记录: |