web-dev-qa-db-fra.com

Javascript - confirmer () dans une fonction jquery .click ()

J'ai le suivant

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
   confirm('Dialogue');
  }
});

Mais je voudrais bool la fonction de confirmation. J'ai déjà essayé

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

Mais aucune boîte de confirmation n'est générée. Comment puis-je accomplir cela?

14
Mechaflash

Vous avez quelques problèmes. Le premier problème est que vous définissez une variable avec le nom confirm. Pas bon! Renommez-le isGood ou quelque chose d'autre.

L'autre bug est juste ici: 

if (confirm=true) {

confirm=true est une cession, pas une comparaison. 

Il doit être

if (confirm==true) {

ou juste

if (confirm) {

Donc, votre code serait quelque chose comme

var bar = "bar";
$("button").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var isGood=confirm('Dialogue');
    if (isGood) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
22
epascarello
if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }
12
Fatima Zohra

Tous les commentaires concernant la comparaison sont corrects, cependant, la raison pour laquelle la boîte de dialogue de confirmation ne s'affiche pas est que vous effacez l'objet de la boîte de confirmation.

Changez le nom de la confirm var.

$(element).click(function() {
  var confirm1 = confirm('Dialogue');
  if (confirm1) {
    alert('true');
  } else {
    alert('false');
  }  
});

http://jsfiddle.net/xjGZj/

Comparez cela à celui qui ne fonctionne pas.

$(element).click(function() {
  var confirm = confirm('Dialogue');
  if (confirm) {
    alert('true');
  } else {
    alert('false');
  }
});

http://jsfiddle.net/xjGZj/1/

5
BNL

Lorsque vous déclarez une variable n'importe où dans votre fonction, elle est automatiquement "extraite" en tant que variable locale. Lorsque vous appelez confirm en tant que fonction, il trouve d'abord la variable locale (qui n'a pas encore été définie) et ne monte pas dans la chaîne d'étendue jusqu'à window où la fonction habite.

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

est le même que 

$("element").click(function() {
  var foo=bar, confirm = undefined;
  if ( foo == "bar" ) {
  confirm=confirm('Dialogue');
  ...
});

Vous pouvez 1) renommer votre variable, 2) appeler window.confirm("Dialog") pour lui dire que vous voulez utiliser la fonction globale au lieu de la variable locale ou 3) mettre simplement l'appel de confirmation dans un if

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    if (confirm('Dialogue')) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
5
Dennis

essayer 

if (confirm) {
      alert('true');
    } else {
      alert('false');
    }
1
Rafay

Mon premier problème est que votre principal problème réside ici

var foo=bar;
  if ( foo == "bar" ) {

qu'est-ce que le bar? Je crois que vous aviez l’intention de faire l’affectation suivante var foo="bar"; qui ferait que l’instruction if s’évaluerait comme étant vraie et exécuterait la boîte de dialogue de confirmation.

De plus, ce qui suit est inexact

var confirm = confirm("dialog");
if (confirm=true)

juste utiliser ceci:

if (confirm("dialog"))
0
John Hartsock

Ajoutez la classe .confirm à un élément puis en écriture jQuery.

$('.confirm').click(function() {

    return confirm("Are you sure?");

});
0
Salam