1
votes

Comment appeler différentes fonctions JS sur différents clics sur un bouton?

J'essaie d'appeler une fonction JS qui déclenche une fenêtre contextuelle au premier clic sur le bouton après le chargement de la page. Et puis une fonction différente au deuxième clic, je n'ai aucune idée de comment faire cela et tout ce que j'ai trouvé dessus a été difficile à adapter.

Voici le popup: https://jsfiddle.net/d80tcw5f/

Voici l'élément pour le bouton courant.

    <a ng-class="{true : 'cart-checkout-button disabled', false : 'cart-checkout-button'}[data.DisableCheckout]" ng-click="PlcaOrder()" >
                                        <span class="payment-label">{{data.PlaceOrderText}}&nbsp;</span>
                             <span aria-hidden="true" class=" icon-arrow-right2"></span> </a>

"PlcaOrder ()" est la fonction qui redirige vers la passerelle de paiement, ce dont j'ai besoin au deuxième clic.

Toute aide serait très appréciée, merci !


0 commentaires

5 Réponses :


0
votes

À la fin de la fonction qui est appelée au premier clic, changez simplement la valeur de l'attribut ng-click en la deuxième fonction que vous voulez appeler, par exemple. PlcaOrder ()


0 commentaires

1
votes

La façon de procéder serait de créer une 3e fonction pour le routage

var func1 = ...;
var func2 = ...;

var func3 = function(e) {
  if (!this.firstClick) {
    this.firstClick = true;
    func1(e);
  } else {
    func2(e);
  }
}


4 commentaires

Je ne suis donc même pas sûr que cela fonctionne encore, car malgré le fait que cela fonctionne dans JS Fiddle, la fenêtre contextuelle ne fonctionne pas sur le site, le bouton devient tout simplement cliquable.


@BLiTz J'en suis désolé, mais d'après ce que vous avez publié, je ne pense pas que je peux / nous pouvons vous aider avec ce problème


Hé! Donc, cela a fonctionné avec un peu de bricolage, le problème que j'ai rencontré était que je ne pouvais pas fermer la fenêtre contextuelle à l'aide du bouton, car le style était inactif en raison du commutateur. jsfiddle.net/a7jn0wue Merci!


@BLiTz Bon! Lorsque vous avez une chance, veuillez cliquer sur la coche à côté de la question pour la marquer comme réponse



0
votes

Je ne suis pas sûr d'avoir bien compris votre point de vue, mais essayez quelque chose comme la définition d'un booléen sur l'événement de clic. Une fois que vous avez cliqué sur le bouton, définissez-le sur true, puis appelez la deuxième fonction (définissez la deuxième fonction à appeler uniquement si votre booléen est défini sur true). Ensuite, après le deuxième appel de fonction, réinitialisez le booléen à false.


0 commentaires

0
votes

Je stockais le nombre de clics dans une variable, puis j'incrémenterais ce nombre à chaque fois que le bouton est cliqué. Ensuite, en fonction du numéro de la variable, faites quelque chose. Exemple:

 <button onclick="myFunction()">Click me!</button> 
let clicks = 0;

function myFunction() {
  clicks++;
  if (clicks === 1) {
    console.log("button clicked for the first time")
  } else {
    console.log("button clicked more than once")
  }
}


0 commentaires

0
votes

Changer de style.

var clicks = 0;

function clickSwitcher() {
  switch (clicks) {
    case 0:
      console.log("click0", "Do something!");
      break;
    case 1:
      console.log("click1", "Make a thing.");
      break;
    case 2:
      console.log("click2", "Drink!");
      break;
    case 3:
      console.log("click3", "Test the loop.");
      break;
    case 4:
      console.log("click4", "Sleep.");
      clicks = 0 //and restart
      break;
  }
  clicks++;
}


0 commentaires