Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3195 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Détecter un changement de valeur dans un input

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Détecter un changement de valeur dans un input

n°2326685
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2018 à 11:32:46  profilanswer
 

Bonjour,  
Dans un formulaire, j'ai un input type text en read-only qui prend sa valeur via un clic sur un autre élément (un tableau qui contient des valeurs, la valeur cliquée étant reportée dans le input). J'ai besoin de détecter quand la valeur a changé dans ce input. onchange et oninput ne réagissent pas car le composant n'a pas le focus :(
Pour info, j'ai pas la possibilité de modifier le script qui reporte la valeur du tableau dans le input.
Merci par avance :jap:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 21-12-2018 à 11:32:46  profilanswer
 

n°2326686
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 11:50:47  profilanswer
 

Pourquoi ne pas propager l'évènement à partir du clic et vérifier si la nouvelle valeur est différente de l'ancienne ?

 

EDIT : mal lu, j'ai lu le contraire, comme quoi tu pouvais modifier cette partie du script...


Message édité par MaybeEijOrNot le 21-12-2018 à 11:51:38

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326687
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 12:06:19  profilanswer
 

Et tu ne peux même pas retirer l'évènement attaché à l'élément cliqué pour en ajouter un nouveau qui ferait ce que je te propose + ce que faisais le script ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326695
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 16:10:43  profilanswer
 

Bon j'ai trouvé une solution qui doit être possible, en modifiant le setter de la propriété "value" de ton textarea : https://codepen.io/anon/pen/yGMPLq
Tu as juste à changer le contenu du if en fonction de ce que tu veux faire quand la valeur change.


Message édité par MaybeEijOrNot le 21-12-2018 à 16:15:32

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326698
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2018 à 16:20:11  profilanswer
 

Effectivement, je pense que ça va le faire. C'était un input et non un textarea, mais peu importe, le système devrait fonctionner. Quelque part, ça rejoint ce que je pensais : devoir faire une sorte de monitoring de la valeur courante de mon input.
 
Merci :jap:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2326699
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 16:26:45  profilanswer
 

Hum ça change un peu, je t'ai mis à jour le codepen, fallait remplacer le this.innerHTML par un setAttribute.

 

EDIT : et à voir comment il modifie la valeur justement, est-ce qu'il passe par la proriété value ou autrement ?


Message édité par MaybeEijOrNot le 21-12-2018 à 16:28:16

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326701
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 17:02:17  profilanswer
 

En fait c'est vraiment important de savoir comment est modifiée la propriété. Si c'est avec "setAttribute('value', newvalue);" ou "obj.value = newvalue;" ce n'est pas absolument pas la même chose.
La bonne façon de procéder est la première (setAttribute) mais d'expérience peu de gens le font.
 
Ma solution fonctionne pour "obj.value = newvalue;" en utilisant un bug de définition des clés des propriétés. Mais du coup si une modification de obj.value est effectuée avant la modification du setter ça be fonctionne plus.
 
Une solution propre doit pouvoir exister avec l'utilisation de "setAttribute".


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326702
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2018 à 17:07:04  profilanswer
 

Effectivement, quand on remplace textarea par un input avec un attribut value, le code marche pas :(
Et oui, la MAJ de la valeur du input se fait via "obj.value = newvalue;"
C'est quand même une méthode en vigueur depuis la fin des années 90 bien avant que setAttribute existe je pense.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2326703
MaybeEijOr​Not
but someone at least
Posté le 21-12-2018 à 18:29:22  profilanswer
 

C'est bien ça le problème, il ne modifie qu'une propriété de l'objet en question alors qu'avec setAttribute tu modifies toutes ls propriétés associées.

 

Je te laisse avec ce dernier codepen : https://codepen.io/anon/pen/JwWpZx
Tout fonctionne sauf l'affichage de la bonne valeur dans l'input, je ne comprends pas pourquoi.

 

EDIT : sinon ce codepen https://codepen.io/anon/pen/yGMPLq fonctionne bien, faut juste pas faire d'appel sur myObj.value avant l'évènement.


Message édité par MaybeEijOrNot le 21-12-2018 à 18:58:26

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326705
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2018 à 23:09:32  profilanswer
 

Je te remercie. Je testerai le code n°2 à mon retour de congés et te tiendrai au courant. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 21-12-2018 à 23:09:32  profilanswer
 

n°2326707
MaybeEijOr​Not
but someone at least
Posté le 22-12-2018 à 10:58:46  profilanswer
 

Par contre, la meilleure solution reste évidemment :

MaybeEijOrNot a écrit :

Et tu ne peux même pas retirer l'évènement attaché à l'élément cliqué pour en ajouter un nouveau qui ferait ce que je te propose + ce que faisais le script ?


 
 
Après, en fonction de comment a été créé l'évènement, ce n'est pas forcément évident de pouvoir le retirer.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Détecter un changement de valeur dans un input

 

Sujets relatifs
Changement de logo selon le tempsPassage de valeur d'un model à son viewmodel
informer le viewmodel d'un changement dans le modelscript changement ip
Copier coller valeur sur deux feuille avec conditions(Projet) Rappel de valeur d'un fichier variable
SQL Créer une vue avec Nom Champs et Valeur dans des enregistrements[Perl] Détecter un champ en UTF-8
Récupérer le contenu d'un input textRemerciement
Plus de sujets relatifs à : Détecter un changement de valeur dans un input


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR