J'ajoute actuellement une entrée via un événement .click, puis je souhaite écouter toute pression sur cette entrée. Cependant, l'événement ajouté ne déclenche aucun événement après son insertion (c'est-à-dire flou, pression de touche, mise au point). Est-ce que quelqu'un a des suggestions? Merci d'avance! J'ai également essayé .keyup .keydown, ils ne fonctionnent pas.Jquery .keypress sur une entrée ajoutée dynamiquement
Répondre
Pour capturer blur
/focus
événements, pourquoi ne pas ajouter le gestionnaire à l'élément créé avant l'ajouter à DOM?
$('#recipientsDiv').click (function()
{
$('< input type="text" id="toInput" class="inlineBlockElement" style="border:0px none #ffffff; padding:0px; width:20px; overflow:hidden;" />')
.keypress (function (e) { ... })
.blur (function (e) { $(this).remove() })
.appendTo ($(this))
.focus()
;
});
Votre gestionnaire keypress
est ajouté uniquement aux éléments qui existent lorsque vous l'avez ajouté.
Vous devez appeler la méthode live
pour l'ajouter à chaque élément correspondant au sélecteur, peu importe quand il a été ajouté.
Par exemple:
$("input").live('keypress', function(e){
var inputStr = $(this).html();
$("#inputCopier").text(inputStr);
var newWidth = $("#inputCopier").innerWidth;
$(this).css("width", newWidth);
});
Cela a très bien fonctionné pour la touche, merci! Cependant, cela ne semble pas fonctionner pour le flou. Selon la documentation, il n'est pas supporté ... des suggestions? – BinarySolo00100
Ajouter le gestionnaire à l'élément, avant d'ajouter DOM - voir ma réponse ci-dessous –
vous pouvez essayer
$("input").live("keypress", function (e) {
alert(e.keyChar);
});
En réponse à votre commentaire:
Comme vous avez remarqué, la méthode live
ne prend pas en charge l'événement blur
.
Pour contourner ce problème, vous pouvez ajouter manuellement le gestionnaire à chaque fois que vous ajoutez un élément, comme celui-ci:
$("#recipientsDiv").click(function(){
$(this).append('< input type="text" id="toInput" class="inlineBlockElement" style="border:0px none #ffffff; padding:0px; width:20px; overflow:hidden;" />')
$("#toInput")
.focus()
.blur(function(){
$("#toInput").remove();
});
});
Merci, cela a bien fonctionné! Désolé pour la réponse tardive, vacances de Noël :-D – BinarySolo00100
- 1. jQuery KeyPress limitant mon entrée sur TextArea
- 2. instanciation datepicker sur une entrée créée dynamiquement
- 3. Libération ajoutée dynamiquement UILabel
- 4. jQuery ne peut pas supprimer la ligne ajoutée dynamiquement
- 5. La classe dynamiquement ajoutée de jQuery ne se déclenche pas
- 6. Javascript/jQuery passer au champ suivant sur keypress
- 7. Problème jquery identifier l'ancre ajoutée
- 8. Ajouter dynamiquement une entrée avec jsDatePick
- 9. jQuery - keydown/keypress/keyup Détection ENTERKEY?
- 10. événement sur Keypress
- 11. Dialog keypress et DOM
- 12. jquery - ajouter au champ de saisie caché sur keypress?
- 13. jQuery pour « permettre » une entrée
- 14. Formater une entrée avec Jquery?
- 15. jquery keypress poignée pour la liste
- 16. .keypress sur un tag DIV?
- 17. Sqlite comment supprimer la dernière entrée ajoutée d'une table
- 18. jQuery DatePicker ne fonctionne pas sur la ligne nouvellement ajoutée
- 19. Comment ajouter une entrée de texte personnalisée aux images dynamiquement
- 20. La colonne CheckBox ajoutée dynamiquement est désactivée dans GridView
- 21. jQuery keypress gauche/droite de navigation
- 22. Formulaire Jquery: entrée
- 23. jquery base de données keypress autocomplete
- 24. DropDownList Postback sur ENTRÉE Keypress ne pas déclencher l'événement côté serveur
- 25. Ajout d'une fonction de saisie semi-automatique pour une balise d'entrée ajoutée dynamiquement
- 26. avec keypress (en jquery) avec IE
- 27. Comment supprimer keypress de l'entrée avec jquery?
- 28. Combiner les événements keyup, keypress et onblur dans jquery
- 29. Ordre de changement/événements keydown/keypress dans jQuery
- 30. Chaîne de requête bizarre jQuery ajoutée
Que puis-je faire dans des scénarios compliqués par exemple lorsque nous voulons ajouter dynamiquement plus d'un élément? Il semble que la meilleure façon d'utiliser la gestion déléguée des événements est On(). – QMaster