18 Stimmen

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

Ich habe die folgenden

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

Aber ich möchte die Bestätigungsfunktion abschalten. Ich habe bereits versucht

$("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 dies bewerkstelligen?

25voto

epascarello Punkte 194350

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

Der andere Fehler ist genau hier:

if (confirm=true) {

confirm=true ist eine Zuordnung, kein Vergleich.

Es muss sein

if (confirm==true) {

oder einfach

if (confirm) {

Ihr Code würde also etwa so lauten

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

15voto

Fatima Zohra Punkte 2769
if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }

6voto

Dennis Punkte 31622

Wenn Sie eine Variable irgendwo in Ihrer Funktion deklarieren, wird sie automatisch als lokale Variable nach oben "gezogen". Wenn Sie die Funktion confirm aufrufen, findet sie zuerst die lokale Variable (die noch nicht definiert wurde) und geht nicht die Scope-Kette hoch zu window wo sich die Funktion befindet.

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

ist dasselbe wie

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

Sie könnten 1) Ihre Variable umbenennen, 2) die window.confirm("Dialog") sagen, dass Sie die globale Funktion statt der lokalen Variablen verwenden wollen, oder 3) den Bestätigungsaufruf einfach in eine if

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

5voto

BNL Punkte 7055

Alle Kommentare über den Vergleich sind richtig, aber der Grund, warum das Bestätigungsdialogfeld nicht angezeigt wird, ist, dass Sie das Objekt des Bestätigungsfeldes auslöschen.

Ändern Sie den Namen des confirm var.

$(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/

1voto

Rafay Punkte 30734

Versuchen Sie

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X