Je développe une application Web, j'ai une telle exigence que chaque fois que l'utilisateur clique sur script Java: p> code JSP: p> texte code> intérieure interface code> J'ai besoin convert code> dans Champ d'entrée code> et sur flou code> J'ai besoin de le reconvertir code> à nouveau. Donc, j'utilise le script suivant dans l'une de mes pages JSP. Onblur code> IT correspond à l'arrière du champ de saisie au texte normal. Mais si vous essayez à nouveau de le faire, cela ne fonctionnera pas. Quel est le problème avec le script ci-dessus? P> p>
5 Réponses :
Tout d'abord, vous devez modifier votre gestionnaire de clic pour utiliser Deuxièmement, lorsque vous remplacez l'entrée par la portée, vous ne donnez pas à l'élément un identifiant. Par conséquent, l'élément ne correspond plus au sélecteur pour votre gestionnaire de clic. P>
Personnellement, je prendrais complètement une approche différente (et plus simple). J'aurais à la fois la portée et dans l'entrée de mon balise côte à côte. On serait caché pendant que l'autre est montré. Cela vous donnerait moins de chance de faire des erreurs lorsque vous essayez de recréer des éléments DOM et d'améliorer les performances puisque vous ne devez pas constamment ajouter / supprimer des éléments du DOM. P> live () code> aussi. Vous devriez prendre note, cependant, que live () code> a été obsolète depuis un certain temps maintenant. Vous devriez utiliser on () code> dans les deux cas à la place. P >
"Par conséquent, l'élément ne correspond plus au sélecteur de votre gestionnaire de clic" - qui cliquez sur le gestionnaire? Covertspan code> est appelé une seule fois et je ne vois aucune autre pièce jointe du gestionnaire de clic.
Pas une mauvaise idée! Je dois essayer quelque temps.
Je comprends que vous pensez que le remplacement de l'élément est une bonne chose, cependant, j'utiliserais une invite pour obtenir le texte. Pourquoi? Il est beaucoup plus facile et un peu plus jolie pour l'utilisateur. Si vous êtes curieux sur la façon de le faire, je vous montre.
html: p> js: p>
serait bon de changer votre structure DOM à quelque chose comme ceci (notez que la portée et l'entrée sont côte à côte et dans un parent partagé .inputwitch code>
J'ai un problème maintenant, après avoir mis à jour ma version de jQuery, le code ci-dessus ne fonctionne pas.
Quelle version? Je viens de le courir en 2.0 et 2.x (Edge) et ça a fonctionné bien. Qu'est-ce qui se passe? Des erreurs montrant dans la console?
Une version plus générique de La réponse excellente de SMERNY avec des identifiaires peut être faite en modifiant légèrement deux lignes:
De même,
Cela permet simplement d'appliquer les fonctions à n'importe quelle div. Avec deux lignes similaires ajoutées, les deux identifiants et la classe fonctionnent bien. Voir exemple . P> $ INPUT.ATTR ("ID", "LOADNUM"); CODE> devient $ entrée.Attr ("ID", $ ("ID")); Code > - De cette façon, cela prend simplement l'identifiant actuel et le garde, quoi que ce soit. p>
$ span.attr ("id", "loadnum"); code> devient $ span.attr ("id", $ (this) .attr ("id")); code > p>
J'ai fait peu de changement de code, en utilisant ce type d'entrée ne peut pas être vide, il reviendra à sa valeur réelle. JSFIDDLE: - https://jsfiddle.net/svsp3wql/ p> p>
Il y a aussi des plugins JQuery pour "Modifier en place": Stackoverflow.com/Questtions/708801/...