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.
To check if an “enter” key is pressed inside a textbox, just bind the keypress() to the textbox. $('#textbox'). keypress(function(event){ var keycode = (event.
The onkeyup attribute fires when the user releases a key (on the keyboard). Tip: The order of events related to the onkeyup event: onkeydown. onkeypress.
Actually 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 but keyCode == 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/.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With