Y a-t-il n’importe quel événement dans Jquery qui est déclenché uniquement si l’utilisateur appuie sur la touche enter dans un textbox ? Ou n’importe quel plugin qui peut être ajouté pour inclure ce point ? Si ce n’est pas le cas, Comment J’écrirais un plugin rapide qui ferait cela ?
Réponses
Trop de publicités?
Etienne Dupuis
Points
4573
Neal
Points
68710
Voici un plugin pour vous : (violon : http://jsfiddle.net/maniator/CjrJ7/)
jzilla
Points
690
Joshua Burns
Points
2800
Il convient de bien noter que l'utilisation de l' live()
en jQuery a été déprécié depuis la version 1.7
et a été supprimé en jQuery 1.9
. Au lieu de cela, l'utilisation d' on()
est recommandé.
Je vous suggère fortement de la méthodologie suivante pour la liaison, car elle résout le défis:
- Par la liaison de l'événement sur
document.body
et passant de $selector comme deuxième argumenton()
, les éléments peuvent être attaché, détaché, ajoutés ou supprimés dans les DOM, sans avoir à traiter avec les re-liaison ou une double liaison à des événements. C'est parce que l'événement est attachédocument.body
plutôt que d'$selector
directement, ce qui signifie$selector
peuvent être ajoutés, supprimés et ajoutés à nouveau et ne sera jamais à la charge de l'événement lié à elle. - En appelant
off()
avanton()
, ce script peut vivre soit dans l'intérieur du corps principal de la page, ou dans le corps d'un appel AJAX, sans avoir à se soucier accidentellement double-liaison des événements. - En enveloppant le script dans
$(function() {...})
, ce script peut encore être chargé par le corps principal de la page, ou dans le corps d'un appel AJAX.$(document).ready()
ne pas me faire virer pour des requêtes AJAX, tout en$(function() {...})
.
Voici un exemple:
<!DOCTYPE html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var $selector = $('textarea');
// Prevent double-binding
// (only a potential issue if script is loaded through AJAX)
$(document.body).off('keyup', $selector);
// Bind to keyup events on the $selector.
$(document.body).on('keyup', $selector, function(event) {
if(event.keyCode == 13) { // 13 = Enter Key
alert('enter key pressed.');
}
});
});
</script>
</head>
<body>
</body>
</html>