Comment changer le texte du bouton dans JQuery
J'ai ce code qui fonctionne jusqu'à présent:
Violon: http://jsfiddle.net/r4emt/12/
Dès maintenant, avant que vous entrez dans le JQuery UI autocomplete, le bouton indique "Bonjour". Vous pouvez taper "élément" dans le JQuery UI autocomplete et vous remarquerez le bouton maintenant dit: "le Monde". Cliquez sur le "monde" bouton pour placer l'élément dans la liste. Si vous le type d'élément nouveau, vous pouvez sélectionnez-en un et cliquez sur le bouton remplacer sur un élément déjà dans la liste. Toutefois, une fois que vous faites cela, Le bouton toujours dit: "le monde", mais il devrait dire "bonjour", car il n'y a rien dans le champ de saisie. Si vous cliquez dans le champ de saisie, puis appuyez sur la touche supprimer ou à l'arrière de la flèche, il repasse à "bonjour", mais il n'y a rien là à supprimer ou à la gauche de. Je pense que cela a à voir avec cette partie du code:
$('#inputWrapper').on('keyup', '#tags', function() {
if($(this).val() == '') {
$('button.addButton').text('Hello');
} else {
$('button.addButton').text('World');
}
});
Précisément 'keyup' partie. Donc ma question est comment puis-je résoudre ce problème de manière que chaque fois que la zone de saisie est vide, le bouton se lit toujours "bonjour" et quand il est entré dans le champ, le bouton indique "monde"? Merci!
source d'informationauteur sbru
Vous devez vous connecter pour publier un commentaire.
Ici est le travail de violon. Les modifications apportées sont les suivantes:
et à la fin de votre bouton:
Je sais que c'est une mort depuis longtemps thread, mais j'ai besoin d'ajouter cela, parce que je viens de passer 2 jours à traquer une fuite de mémoire (Causé par moi en utilisant le code de cette page).
IMPORTANT: Ne pas utiliser jQuerys texte() sur le bouton éléments!
La fonction crée quelque chose dans le DOM qui ne peut pas être enlevé par le vide(). Ensuite, si vous appelez la fonction plusieurs fois sur une longue période une grande quantité de déchets qui sera laissa dans votre DOM, causant des trucs à casser.
Voir jQuery documentation de l'API.
(Ne peut pas trouver exactement où ses mentionné dans la documentation, mais ses quelque part, je dois courir pour mon train maintenant)...
Ne pourriez-vous définir le texte Bonjour, après un clic sur ce dernier? Ajoutez à cela le fond de votre clic sur un bouton de fonction:
http://jsfiddle.net/r4emt/13/
jsFiddle de Travail Démo
Mettre la condition du type
if($.trim($(this).val()) == '')
pour supprimer les espaces. Aussi, vous devez modifier le texte du bouton de "Bonjour" dans le gestionnaire de l'événement click
Ajouter ceci à la fin de la fonction de clic:
$(this).text('Hello');
Voici le code:
http://jsfiddle.net/r4emt/34/
Cette fonction ne fonctionne que la première fois car après il est exécuté, l'écouteur d'événement est toujours va être évalué après keyup résultant de la zone d'entrée de toujours avoir une valeur. Vous remarquerez qu'une fois que vous cliquez sur le bouton si vous tapez quelque chose et l'effacer en appuyant sur la touche retour arrière, il va revenir à Bonjour.
Pour atteindre vos résultats souhaités, lorsque vous cliquez sur envoyer sur le bouton puisque vous êtes de compensation
la zone de saisie, vous pouvez également modifier le texte.
Voir: http://jsfiddle.net/r4emt/37/
J'ai juste ajouté:
à la fin du clic sur un bouton de fonction.
Utilisation de "texte" de la fonction