2011-11-10 6 views
13

Ho il seguenteJavascript - confirm() all'interno di una funzione jquery .Click()

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

Ma vorrei bool funzione di conferma. Ho già provato

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

Ma non viene generata alcuna casella di conferma. Come posso realizzare questo?

+0

'(conferma = true)' 'dovrebbe essere (conferma == true)' o '(conferma)' anche quello che è il bar in questo contesto 'var foo = bar' –

risposta

20

Hai qualche problema. Il primo problema è che si sta definendo una variabile con il nome confirm. Non bene! Rinominarlo a isGood o qualcos'altro.

L'altro errore è proprio qui:

if (confirm=true) { 

confirm=true è l'assegnazione, non è un confronto.

Ha bisogno di essere

if (confirm==true) { 

o semplicemente

if (confirm) { 

Così il vostro codice sarebbe qualcosa di simile

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

stupido me e il mio noobie errori di battitura. Era perché avevo confirm = true invece di confirm == true. =/ – Mechaflash

1

provare

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

mio iniziale, però, è il problema principale risiede qui

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

che cosa è il bar? Credo che intendesse effettuare il seguente incarico var foo="bar"; che renderebbe l'istruzione if valutata come true ed eseguirà la finestra di conferma.

Inoltre, il seguente è imprecisa

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

basta usare questo:

if (confirm("dialog")) 
+0

eh? quando si esegue una stringa var ==, la stringa è sempre circondata da virgolette (singole o doppie a seconda dell'utilizzo) oppure viene valutata come variabile anziché come stringa. Quindi no, non sarebbe stato scritto come foo = "bar". Ma la tua seconda parte è vera. -1 +1 – Mechaflash

5

Tutti i commenti sul confronto sono corrette, tuttavia, la ragione per la finestra di dialogo di conferma non mostra è che stai cancellando l'oggetto della casella di conferma.

Modificare il nome della variabile confirm.

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

http://jsfiddle.net/xjGZj/

Confronti che, per questo che non funziona.

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

5

Quando si dichiara una variabile in qualsiasi punto della funzione, esso viene automaticamente "tirato" verso l'alto come una variabile locale. Quando chiami conferma come funzione, trova prima la variabile locale (che non è ancora stata definita) e non sale sulla catena dell'ambito a window dove la funzione è attiva.

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

è lo stesso di

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

Si potrebbe 1) rinominare la variabile, 2) lo chiamano window.confirm("Dialog") dicendogli si desidera che la funzione globale anziché la variabile locale o 3) semplicemente mettere la chiamata di conferma all'interno di un se

$("element").click(function() { 
    var foo=bar; 
    if (foo == "bar") { 
    if (confirm('Dialogue')) { 
     alert('true'); 
    } else { 
     alert('false'); 
    } 
    } 
}); 
10
if(!confirm('Are you sure you want to continue?')) { 
        return false; 
    } 
0

Aggiungi .confirm classe ad un elemento t gallina in jQuery scrivere ..

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

    return confirm("Are you sure?"); 

});