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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  onChange sans effet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

onChange sans effet

n°1407384
mbarekh
Posté le 16-07-2006 à 01:15:35  profilanswer
 

Bonsoir,
dans mon site web, j'ai un champ qui peut etre rempli automatiquement (selon les saises dans les autres champs), mais qui peut aussi etre modifié si l'utilisateur le veut.
Mais à chaque fois que le champ change de valeur,  je fais "onChange=alert('valeur changé')".
Quand je modifie la valeur à la main, ça marche, mais quand le champ se remplit automatiquement, ça ne fait rien.
 
Quelqu'un peut me dire pourquoi?
 
 

mood
Publicité
Posté le 16-07-2006 à 01:15:35  profilanswer
 

n°1407386
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 01:24:37  profilanswer
 

parce que tout simplement les évènements sont gérés en fonction de l'action utilisateur
pour palier à ce problème tu peux faire simplement :  
 
monelement.value=nouvellevaleur;
monelement.onchange();
 
sinon evite de faire des alert() c'est plutôt chiant pour l'utilisateur

n°1407388
mbarekh
Posté le 16-07-2006 à 01:29:02  profilanswer
 

tu veux dire que je dois plutot faire:
monelement.onChange() quand je fais le changement automatique?  
 
et sinon, pour l'alert, j'ai pas le choix, je dois le faire ici car je ne suis qu'un pauvre développeur qui suit les caprices d'un client :)
merci

n°1407390
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 01:34:04  profilanswer
 

dès que tu fais un changement de valeur,
 tu dois aussi appeler la méthode onchange de cet élément.
 
et puis c'est onchange() pas onChange()

n°1407395
mbarekh
Posté le 16-07-2006 à 01:41:11  profilanswer
 

Ca depend, y en a qui prefèrent onChange, surtout les habitués de java

n°1407398
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 01:46:40  profilanswer
 

en html voire en xhtml désormais tout est en minuscule (éléments et attributs)
ensuite le JS étant case sensitive, tu n'arrivera pas à atteindre le onchange via la méthode montruc.onChange() mais bien via montruc.onchange();


Message édité par gatsu35 le 16-07-2006 à 01:47:01
n°1407401
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 01:50:24  profilanswer
 

je te laisse faire le test toi même
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5. <script>
  6. window.onload=function() {
  7.  var sel = document.getElementById("montruc" );
  8.  sel.onchange();
  9. }
  10. </script>
  11. </head>
  12. <body>
  13. <select id="montruc" onchange="alert('toto');">
  14. <option>toto1</option>
  15. <option>toto2</option>
  16. <option>toto3</option>
  17. </select>
  18. </body>
  19. </html>

n°1407402
mbarekh
Posté le 16-07-2006 à 01:53:24  profilanswer
 

ça ne marche toujours pas et je ne comprends pas.
Bon voilà le champ qui peut se remplir auto:
 
<input type="text" id="calendar4" name="calendar4" onchange="controle_date();"/>
 
 
et voilà la fontion appelé "controle_date" que tu vois:
 
 
function controle_date()
    {
     if(document.getElementById('localisation').value == 'AD VITAM' & document.getElementById('calendar4').value!='')
     {
      if (!date1_sup_date2(document.getElementById('calendar4').value,document.getElementById('date_saisie').value))  
      {
       alert ("Attention, la date d'alerte est inf\351rieure \340 la date du jour!" );
      }  
     }  
    }
 
 
 
avec:
 
function date1_sup_date2(date1,date2)
    {
     temp1 = date1.split("/" );
     temp2 = date2.split("/" );
     return (temp1[2]>temp2[2] || (temp1[2]==temp2[2] & temp1[1]>temp2[1]) || (temp1[2]==temp2[2] & temp1[1]==temp2[1] & temp1[0]>temp2[0]) );
    }
 
 
 
la fonctio qui sert a remplir automatiquement le champ:
 
 
function verifier_date_alerte()
    {
     
     if (document.getElementById('type_doc').value=="Contrat" & document.getElementById('calendar1').value!="" & document.getElementById('preavis_val').value!="" )
     {
      document.getElementById('calendar4').value=addition_date(document.getElementById('calendar1').value,-2-document.getElementById('preavis_val').value);
      document.getElementById('calendar4').onchange();
      document.getElementById('calendar4').readOnly=true;
     }  
     else  
     {
      document.getElementById('calendar4').value='';
      document.getElementById('calendar4').readOnly=false;
     }      
    }

n°1407403
mbarekh
Posté le 16-07-2006 à 01:55:07  profilanswer
 

bon c'est peut etre pas une bonne idée à 2h du mat, mais au cas ou tu vois la gaffe dis le moi :)

n°1407412
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 01:59:43  profilanswer
 

Sans savoir ce qu'il en retourne derrière je peux pas trop te dire.
 
Mais ya pleins de trucs bancales dans ton code.
 
pourquoi n'utilises tu pas l'objet date pour comparer 2 dates ?  
c'est quand même largement plus simple.
 
Ensuite utilise plutôt des références car 36 getElementById c'est fuper mais illisible

mood
Publicité
Posté le 16-07-2006 à 01:59:43  profilanswer
 

n°1407420
mbarekh
Posté le 16-07-2006 à 02:07:25  profilanswer
 

references? je connais pas.
et j'unistilise pas l'objet date car en JS il n'y a pas de fonctions qui permets de comparere des dates. Donc j'ai du en construire une. A priori elle marche. Bon merci quand meme, mais je pense que je vais devoir me casser la tete tout seul :)

n°1407422
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 02:16:50  profilanswer
 

ouais super ya pas de fonction pour comparer les dates ? oui c'est vrai.
Mais une simple conditiion sur deux dates suffit !
 
madate.getTime()<madate2.getTime()
là je compare mes deux date

n°1407425
mbarekh
Posté le 16-07-2006 à 02:19:11  profilanswer
 

justement, je suis en train de modifier ma fonction de compariason de date pour utiliser des getTime(). On sait jamais, ca pourrait marcher après. Mais sinon, c'est quoi que tu appelles référence?

n°1407430
mbarekh
Posté le 16-07-2006 à 02:25:23  profilanswer
 

ça marche enfin. Merci Gatsu!

n°1407432
gatsu35
Blablaté par Harko
Posté le 16-07-2006 à 02:27:49  profilanswer
 

mbarekh a écrit :

justement, je suis en train de modifier ma fonction de compariason de date pour utiliser des getTime(). On sait jamais, ca pourrait marcher après. Mais sinon, c'est quoi que tu appelles référence?


 

Code :
  1. var truc = document.getElementById("monelementavecid" )


 
maintenant truc est une référence à mon élément en HTML
et je peux donc accéder à toutes ses propriétés
truc.innerHT;ML
truc.onclick();
truc.onchange();

n°1407433
mbarekh
Posté le 16-07-2006 à 02:29:38  profilanswer
 

ah d'accord. c'est vrai, j'aurai du y penser, c'est moins couteux.
allez, merci pour tout et bonne nuit (rnfin ce qu'il en reste :))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  onChange sans effet

 

Sujets relatifs
changement de couleur avec onChange[Select + onchange] Recupérer la valeur de l'index précédent
onChange fonctionne sous Firefox mais pas IE...[résolu] Pb de onChange (désolé)
probleme: les modification ne prennent pas effet !!Submit avec image de fond plus effet hover
[AS] >> Effet de disparission ??Effet de loupe quand le curseur passe sur l'img
Générateur online d'effet de texte en flash?Modifier liens avec à onchange [RESOLU]
Plus de sujets relatifs à : onChange sans effet


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)