I want to detect the Control + A event in input. I can find the Control + A event, but the function is continuing even after return false
.
jsFiddle - /
$('.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");
});
<script src=".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>
I want to detect the Control + A event in input. I can find the Control + A event, but the function is continuing even after 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");
});
<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>
I want this to work in keyup
not in keydown
. Because I am using autosearch and I don't want to call function before keyrelease. And also Ctrl + A won't highlight text in keydown when it returned false.
2 Answers
Reset to default 20Actually the function stops. What you are experiencing is that two keyup events trigger: the one from ctrl and the one from A.
The first one returns as expected because it does fill the requirements: ctrlKey == true
and keyCode == 65 || keyCode == 97
.
But the second one, there will be only one key pressed so both statements can't be true together:
If you last released the ctrl, then
ctrlKey
is true butkeyCode == 65 || keyCode == 97
is not.If you last released the A, then
ctrlKey
is now false.
Then the line which sets #status
to an error message is run.
Actually it's not. You must change your event from 'keyup'
to 'keydown'
. Then try it again. You can check this fiddle. http://jsfiddle.net/ebilgin/f6rcgpmh/5/
If you need control on autocomplete, you have to put your controls before sending the data.
The Ctrl keyup event trigger causes your problem. I added another condition to your code,
if (e.keyCode == 17) // Ctrl key, fires at Ctrl's keyup.
return false;
You can check my new fiddle, http://jsfiddle.net/ebilgin/f6rcgpmh/10/.
keydown
triggers beforekeyup
right? – Praveen Puglia Commented Aug 10, 2015 at 6:42ctrlKey
, either the keyCode is nota
orA
anymore – Kaiido Commented Aug 10, 2015 at 6:45