Come rilevare premendo Invio sulla tastiera utilizzando jQuery?
-
13-09-2019 - |
Domanda
Vorrei rilevare se l'utente ha premuto Invio utilizzando jQuery.
Come è possibile? C'è bisogno di un plugin?
EDIT: Sembra che ho bisogno di usare il href="http://docs.jquery.com/Events/keypress" rel="noreferrer"> Volevo sapere se qualcuno sa se ci sono problemi di browser con quel comando -? Come se non ci sono problemi di compatibilità del browser che dovrei sapere keypress()
metodo
Soluzione
Il punto di jQuery è che non devi preoccuparti di differenze tra i browser. Sono abbastanza sicuro che si può tranquillamente andare con Invio essere 13 in tutti i browser. Quindi, con questo in mente, si può fare questo:
$(document).on('keypress',function(e) {
if(e.which == 13) {
alert('You pressed enter!');
}
});
Altri suggerimenti
ho scritto un piccolo plugin per rendere più facile associare il "sul tasto Invio premuto" un evento:
$.fn.enterKey = function (fnc) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if (keycode == '13') {
fnc.call(this, ev);
}
})
})
}
Utilizzo:
$("#input").enterKey(function () {
alert('Enter!');
})
non ho potuto ottenere il codice inviato da @Paolo Bergantino a lavorare, ma quando ho cambiato in $(document)
e e.which
invece di e.keyCode
poi ho trovato a lavorare senza errori.
$(document).keypress(function(e) {
if(e.which == 13) {
alert('You pressed enter!');
}
});
Ho trovato questo per essere più cross-browser compatibile:
$(document).keypress(function(event) {
var keycode = event.keyCode || event.which;
if(keycode == '13') {
alert('You pressed a "enter" key in somewhere');
}
});
È possibile farlo usando il jquery 'KeyDown' impugnatura evento
$( "#start" ).on( "keydown", function(event) {
if(event.which == 13)
alert("Entered!");
});
ho trascorso qualche tempo a venire con questa soluzione spero che aiuta qualcuno.
$(document).ready(function(){
$('#loginforms').keypress(function(e) {
if (e.which == 13) {
//e.preventDefault();
alert('login pressed');
}
});
$('#signupforms').keypress(function(e) {
if (e.which == 13) {
//e.preventDefault();
alert('register');
}
});
});
C'è una pressione del tasto () metodo di evento. il numero ASCII del tasto Invio è 13 e non è dipendente su cui viene utilizzato il browser.
Usa event.key
e JS moderna!
$(document).keypress(function(event) {
if (event.key === "Enter") {
// Do something
}
});
o senza jQuery:
document.addEventListener("keypress", function onEvent(event) {
if (event.key === "Enter") {
// Do something better
}
});
Un'estensione minore della risposta di Andrea sopra rende il metodo di supporto più utile quando si potrebbe anche voler catturare presse modificati entrare (cioè ctrl-entrare o shift-enter). Ad esempio, questa variante permette vincolante come:
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
per inviare un modulo quando l'utente preme ctrl-entrare con particolare attenzione alla textarea di quel modulo.
$.fn.enterKey = function (fnc, mod) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
fnc.call(this, ev);
}
})
})
}
(vedi anche Ctrl + Invio jQuery in TEXTAREA )
In alcuni casi, potrebbe essere necessario per sopprimere il INVIO per una certa area di una pagina, ma non per altre aree di una pagina, come la pagina sottostante che contiene un intestazione <div>
con un ricerca campo.
Mi c'è voluto un po 'per capire come fare questo, e sto postando questo esempio semplice ma completa qui per la comunità.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test Script</title>
<script src="/lib/js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('.container .content input').keypress(function (event) {
if (event.keyCode == 10 || event.keyCode == 13) {
alert('Form Submission needs to occur using the Submit button.');
event.preventDefault();
}
});
</script>
</head>
<body>
<div class="container">
<div class="header">
<div class="FileSearch">
<!-- Other HTML here -->
</div>
</div>
<div class="content">
<form id="testInput" action="#" method="post">
<input type="text" name="text1" />
<input type="text" name="text2" />
<input type="text" name="text3" />
<input type="submit" name="Submit" value="Submit" />
</form>
</div>
</div>
</body>
</html>
Link JSFiddle Playground : il pulsante [Submit]
non fa nulla, ma premendo INVIO da uno dei controlli casella di testo non inviare il modulo.
Prova questo per rilevare il tasto ENTER.
$(document).on("keypress", function(e){
if(e.which == 13){
alert("You've pressed the enter key!");
}
});
vedi demo @ rilevare entrare premere il tasto sulla tastiera
Usando il metodo pressione di un tasto per rilevare premere Invio sulla tastiera utilizzando jQuery?
https://www.tutsmake.com/ jquery-pressione di un tasto-evento-detect-entrare-key-premuto /
$('#someTextBox').keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
alert('You pressed a "enter" key in textbox');
}
event.stopPropagation();
});
<html>
<head>
<title>jQuery keypress() Method To Detect Enter key press or not Example</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<h1>Write something here & press enter</h1>
<label>TextBox Area: </label>
<input id="someTextBox" type="text" size="100" />
</body>
</html>
Il modo più semplice per rilevare se l'utente ha premuto entrare è quello di utilizzare il numero tasto inserire il numero chiave è = 13 per controllare il valore della chiave nel dispositivo
$("input").keypress(function (e) {
if (e.which == 32 || (65 <= e.which && e.which <= 65 + 25)
|| (97 <= e.which && e.which <= 97 + 25)) {
var c = String.fromCharCode(e.which);
$("p").append($("<span/>"))
.children(":last")
.append(document.createTextNode(c));
} else if (e.which == 8) {
// backspace in IE only be on keydown
$("p").children(":last").remove();
}
$("div").text(e.which);
});
Premendo il tasto si otterrà come risultato 13 entrano. utilizzando il valore chiave che si può chiamare una funzione o fare quello che vuoi
$(document).keypress(function(e) {
if(e.which == 13) {
console.log("User entered Enter key");
// the code you want to run
}
});
se si desidera raggiungere un pulsante una volta entrare tasto viene premuto è possibile utilizzare il codice
$(document).bind('keypress', function(e){
if(e.which === 13) { // return
$('#butonname').trigger('click');
}
});
La speranza è aiutare
Credo che il metodo più semplice sarebbe utilizzando vaniglia Javacript:
document.onkeyup = function(event) {
if (event.key === 13){
alert("enter was pressed");
}
}
$(function(){
$('.modal-content').keypress(function(e){
debugger
var id = this.children[2].children[0].id;
if(e.which == 13) {
e.preventDefault();
$("#"+id).click();
}
})
});
$(document).keyup(function(e) {
if(e.key === 'Enter') {
//Do the stuff
}
});