2 fonctions sur 1 onclick

Résolu/Fermé
athome - Modifié par athome le 18/07/2011 à 15:56
 athome - 18 juil. 2011 à 17:34
Bonjour j'aimerais passer 2 actions javascripts sur un onclick, mais je ne trouve pas de solutions !

Voici d'abord les deux input fonctionnant bien séparément :
Une confirmation
<input onclick="return(confirm('Etes-vous sûr de vouloir modifier ce grade ?'));" type="submit" value="Modifier" name="modif"/>


et une barre de progression
<input onclick="showWait('Modification en cours');" type="submit" value="Modifier" name="modif"/>


j'ai bien sur testé :

<input onclick="return(confirm('Etes-vous sûr de vouloir modifier ce grade ?'));showWait('Modification en cours');" type="submit" value="Modifier" name="modif"/>


Mais ça ne fonctionne pas, la deuxième action ne se réalise pas :(

Voici le second script repris sur le web donnant une barre de progression

 </script> 
  <SCRIPT LANGUAGE="JavaScript"> 
    document.writeln("<div id=\"jsWaitMessage\" style=\"font-family: Verdana; font-size: 10px; text-align: center; padding: 3px; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; z-index:3\"></div>" ); 
    document.writeln("<div id=\"jsWaitArea\" style=\"display: none; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; border: 1px black solid; background: #fdd46c;z-index:2\">" ); 
    document.writeln("<div id=\"jsWaitBlock\" style=\"position: relative; left: 0px; height: 20px; width: 50px; background: #fcbb10;z-index:2\"></div>" ); 
    document.writeln("</div>" ); 
    jsWait_defaultInstance = null; 
    function showWait(message) 
    { 
   alert('Etes-vous sûr de vouloir modifier ce grade ?'); 
      jsWait_defaultInstance = new jsWait('jsWait_defaultInstance', message); 
      jsWait_defaultInstance.show(); 
    } 
    function jsWait(name, message) 
    { 
      this.name = name; 
      this.message = message; 
      this.speed = 10; 
      this.direction = 2; 
      this.waiting = false; 
      this.divMessage = document.getElementById("jsWaitMessage" ); 
      this.divArea = document.getElementById("jsWaitArea" ); 
      this.divBlock = document.getElementById("jsWaitBlock" ); 
    } 
    jsWait.prototype.show = function() 
    { 
      this.divMessage.innerHTML = this.message; 
      this.divMessage.style.display = "block"; 
      this.divArea.style.display = "block"; 
      this.divBlock.style.display = "block"; 
      this.divBlock.style.left = "0px"; 
      this.waiting = true; 
      
      this.loop(); 
    } 
    jsWait.prototype.setMessage = function(message) 
    { 
      this.message = message; 
      this.divMessage.innerHTML = this.message; 
    } 
    jsWait.prototype.stop = function() 
    { 
      this.waiting = false; 
      this.divMessage.style.display = "none"; 
      this.divArea.style.display = "none"; 
      this.divBlock.style.display = "none"; 
    } 
    jsWait.prototype.loop = function() 
    { 
      myLeft = this.divBlock.style.left; 
      myLeft = myLeft.substring(0, myLeft.length-2); 
      intLeft = parseInt(myLeft); 
      if(intLeft >= 250) 
        this.direction = -2; 
      if(intLeft <= 0) 
        this.direction = 2; 
      myLeft = "" + (intLeft+this.direction) + "px"; 
      this.divBlock.style.left = myLeft; 
      if(this.waiting) 
        setTimeout(this.name + ".loop()", this.speed); 
    } 
 </script>


merci d'avance pour votre aide ;)



A voir également:

3 réponses

Tatanos Messages postés 966 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 26 mai 2016 156
18 juil. 2011 à 16:21
Bonjour,

Petite question peut-être bête, n'est-il pas possible d'appeler une fonction, qui elle même appel les deux autre ?
0
hervé56 Messages postés 269 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 25 mars 2017 10
18 juil. 2011 à 16:55
biensur
1
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
18 juil. 2011 à 16:25
Salut,
A mon avis, tu cherche compliqué la ou c'est tout simple.
Pourquoi tu n'appelle pas t'a 2eme fonction lors de l'execution de la 1er.
Je t'ai fait sa:

  <SCRIPT LANGUAGE="JavaScript"> 
    document.writeln("<div id=\"jsWaitMessage\" style=\"font-family: Verdana; font-size: 10px; text-align: center; padding: 3px; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; z-index:3\"></div>" ); 
    document.writeln("<div id=\"jsWaitArea\" style=\"display: none; position: absolute; left: 30%; top: 40%; height: 20px; width: 300px; border: 1px black solid; background: #fdd46c;z-index:2\">" ); 
    document.writeln("<div id=\"jsWaitBlock\" style=\"position: relative; left: 0px; height: 20px; width: 50px; background: #fcbb10;z-index:2\"></div>" ); 
    document.writeln("</div>" ); 
    jsWait_defaultInstance = null; 
    
	function showWait() 
    { 
		if (confirm('Etes-vous sûr de vouloir modifier ce grade ?')){
		  jsWait_defaultInstance = new jsWait('jsWait_defaultInstance', "Modification en cours"); 
		  jsWait_defaultInstance.show(); 
		}
    } 
	
    function jsWait(name, message) 
    { 
      this.name = name; 
      this.message = message; 
      this.speed = 10; 
      this.direction = 2; 
      this.waiting = false; 
      this.divMessage = document.getElementById("jsWaitMessage" ); 
      this.divArea = document.getElementById("jsWaitArea" ); 
      this.divBlock = document.getElementById("jsWaitBlock" ); 
    } 
    jsWait.prototype.show = function() 
    { 
      this.divMessage.innerHTML = this.message; 
      this.divMessage.style.display = "block"; 
      this.divArea.style.display = "block"; 
      this.divBlock.style.display = "block"; 
      this.divBlock.style.left = "0px"; 
      this.waiting = true; 
      
      this.loop(); 
    } 
    jsWait.prototype.setMessage = function(message) 
    { 
      this.message = message; 
      this.divMessage.innerHTML = this.message; 
    } 
    jsWait.prototype.stop = function() 
    { 
      this.waiting = false; 
      this.divMessage.style.display = "none"; 
      this.divArea.style.display = "none"; 
      this.divBlock.style.display = "none"; 
    } 
    jsWait.prototype.loop = function() 
    { 
      myLeft = this.divBlock.style.left; 
      myLeft = myLeft.substring(0, myLeft.length-2); 
      intLeft = parseInt(myLeft); 
      if(intLeft >= 250) 
        this.direction = -2; 
      if(intLeft <= 0) 
        this.direction = 2; 
      myLeft = "" + (intLeft+this.direction) + "px"; 
      this.divBlock.style.left = myLeft; 
      if(this.waiting) 
        setTimeout(this.name + ".loop()", this.speed); 
    } 
 </script>
 
 <input onclick="showWait()" type="submit" value="Modifier" name="modif"/>
0
Ca fonctionne bien dans le cas de la confirmation positive, mais si je répond non le script s'exécute quand même !
il faudrait son exécution
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
18 juil. 2011 à 16:41
Avec mon code, sa s'execute quand tu clic sur annulé? C'est bizarre car moi sa fonctionne bien (sous ie9,firefox et chrome en tout cas)

Ou alors j'ai pas bien compris ton besoin
0
Oui dans mon cas sur FF5, si je fais annuler, cela exécute quand même le formulaire
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
Modifié par Camuke le 18/07/2011 à 17:06
C'est tres bizarre, moi sous firefox5, sa marche sans probleme.
Essai de débugger et de me donner se que te renvoie la fonction confirm avec ton navigateur lorsque tu clic sur ok et sur annuler

var t = confirm('Etes-vous sûr de vouloir modifier ce grade ?');
alert(t);
0
alors le bouton "ok" me répond "true" et "annuler" me répond "false", mais dans les deux cas le formulaire est exécuté
0
hervé56 Messages postés 269 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 25 mars 2017 10
18 juil. 2011 à 16:55
sépare tes deux fonction a appeler par un point virgule dans le onclick
0
J'ai déjà essayé, mais ça ne fonctionne pas, la deuxième action ne se réalise pas :(
0
hervé56 Messages postés 269 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 25 mars 2017 10
18 juil. 2011 à 17:21
alorzs c'est que la premiere rencontre une erreur
0