wake-up-neo.com

Javascript - confirm () innerhalb einer jquery .click () - Funktion

Ich habe folgendes

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

Aber ich möchte die Bestätigungsfunktion boolen. Ich habe es schon probiert

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

Es wird jedoch kein Bestätigungsfeld generiert. Wie kann ich das erreichen?

14
Mechaflash

Sie haben ein paar Probleme. Das erste Problem ist, dass Sie eine Variable mit dem Namen confirm definieren. Nicht gut! Benennen Sie es in isGood oder etwas anderes um.

Der andere Fehler ist hier richtig: 

if (confirm=true) {

confirm=true ist Zuordnung, kein Vergleich. 

Es muss sein

if (confirm==true) {

oder nur

if (confirm) {

Dein Code wäre also ungefähr so

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

Alle Kommentare zum Vergleich sind korrekt. Der Bestätigungsdialog wird jedoch nicht angezeigt, weil Sie das Bestätigungsfeld-Objekt löschen.

Ändern Sie den Namen der Variable confirm.

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

http://jsfiddle.net/xjGZj/

Vergleichen Sie das mit diesem, das nicht funktioniert.

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

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

5
BNL

Wenn Sie eine Variable irgendwo in Ihrer Funktion deklarieren, wird sie automatisch als lokale Variable nach oben "gezogen". Wenn Sie bestätigen als Funktion aufrufen, findet es zuerst die lokale Variable (die noch nicht definiert wurde) und geht nicht die Gültigkeitsbereichskette nach window hoch, in der die Funktion lebt.

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

ist das gleiche wie 

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

Sie könnten 1) Ihre Variable umbenennen, 2) window.confirm("Dialog") aufrufen und sagen, dass Sie anstelle der lokalen Variablen die globale Funktion verwenden möchten, oder 3) den Bestätigungsaufruf einfach in ein if einfügen

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

versuchen 

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

Meine erste Frage ist, dass Ihr Hauptproblem hier liegt

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

was ist bar? Ich glaube, Sie wollten die folgende Zuweisung var foo="bar"; vornehmen, wodurch die if -Anweisung als wahr ausgewertet und der Bestätigungsdialog ausgeführt werden würde.

Darüber hinaus ist das Folgende ungenau

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

benutze einfach folgendes:

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

Fügen Sie eine .confirm-Klasse zu einem Element hinzu und schreiben Sie anschließend in jQuery.

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

    return confirm("Are you sure?");

});
0
Salam