Finestre di dialogo Javascript (alert, confirm e prompt)

Nelle precedenti lezioni della nostra guida Javascript abbiamo presentato lโ€™oggeto window di Javascript ed il fondamentale metodo open(); in questa lezione proseguiremo il nostro approfondimento su questo fondamentale oggetto approfondendo altri tre metodi davvero importanti attraverso i quali gli sviluppatori possono creare delle finestre di dialogo con le quali interagire con gli utenti.

Il metodo alert()

Attraverso il metodo alert รจ possibile creare delle finestre di avviso (alert box) al cui interno inserire messaggi personalizzati. Lโ€™unica facoltร  concessa allโ€™utente รจ di cliccare sul pulsante OK per chiudere la finestra.

Pubblicitร 

Eโ€™ evidente come lo scopo di questo metodo sia, in pratica, quello di fornire dei semplici avvisi agli utenti.

Una caratteristica degli alert box รจ di forzare il browser a togliere il focus dalla finestra: questo vuol dire che lโ€™utente non potrร  interagire con altri elementi della pagina sino a quando non avrร  chiuso (e si spera letto) la finestra.

La sintassi di alert รจ la seguente:

window.alert('Messaggio...');

o piรน semplicemente:

alert('Messaggio...');

In pratica non รจ necessario anteporre window ad alert, in quanto questi funzionerร  ugualmente. Questa caratteristica รจ comune a tutti gli altri metodi presentati in questa lezione.

Vediamo un esempio di alert box scatenato dal click su una immagine:

<script>
function copyright() {
  alert("Tramonto in spiaggia\nAutore: Mario Rossi");
}
<script>
<img src="foto.jpg" onclick="copyright()">
Prova il codice

Si noti che per andare a capo allโ€™interno della finestra di alert abbiamo utilizzato \n, ovvero la notazione per un ritorno a capo fisico (newline).

Il metodo confirm()

Il metodo confirm, in un certo senso, รจ lโ€™evoluzione dellโ€™alert box. Attraverso questo metodo, infatti, viene mostrata allโ€™utente una finestra sostanzialmente identica a quella prodotta dal metodo alert() ma, a differenza di questโ€™ultimo, viene lasciata allโ€™utente una scelta se premere su OK o su Annulla.

Attraverso questo metodo, ad esempio, รจ possibile porre allโ€™utente delle richieste di conferma alle quali, ovviamente, potrร  rispondere in modo affermativo (OK) oppure no (Annulla). Il metodo confirm restituisce true alla pressione del tasto OK e false alla pressione del tasto Annulla.

Come nel caso di alert, anche confirm toglie il focus alla finestra ed "obbliga" lโ€™utente a rispondere per poter sbloccare le altre funzionalitร  della pagina web.

Vediamo un esempio scolastico:

var domanda = confirm("Premi un buttone");
if (domanda === true) {
  alert("Hai premuto OK");
}else{
  alert("Hai premuto Annulla");
}

Vediamo ora un esempio un poโ€™ piรน pratico:

function cancella(id) {
  var domanda = confirm("Sei sicuro di voler cancellare?");
  if (domanda === true) {
    location.href = 'cancella.php?id='+id;  
  }else{
    alert('Operazione annullata');
  }
}
Prova il codice

Nel nostro esempio abbiamo creato una semplice funzione per la cancellazione di un record dal database, prima di procedere, perรฒ, chiediamo conferma allโ€™utente. Se questo clicca su OK si effettua un redirect alla pagina di cancellazione, in caso contrario non succede nulla (e mostriamo un semplice avviso).

Il metodo prompt()

Il metodo prompt apre una finestra di dialogo con un campo di testo allโ€™interno del quale lโ€™utente puรฒ inserire del contenuto. Se lโ€™utente clicca su OK il metodo prompt restituisce il valore inserito, in caso contrario restituisce null.

Questo metodo รจ utilizzato per raccogliere piccole informazioni dallโ€™utente come, ad esempio, il suo nome o lโ€™anno di nascitaโ€ฆ informazioni che saranno poi utilizzate per modellare la pagina che gli verrร  mostrata. Vediamo un esempio:

var anno = prompt("In che anno sei nato?", "");
if (anno !== null) {
  var dt = new Date();
  var anno_corrente = dt.getFullYear();
  var eta = (anno_corrente - anno);
  if (eta > 18) {
    alert("Sei maggiorenne");
  }else{
    alert("Sei minorenne");    
  }
}
Prova il codice

Come potete notare il metodo prompt ammette due argomenti: il primo รจ la descrizione di ciรฒ che si chiede allโ€™utente di inserire nella casella di testo mentre il secondo รจ un valore di default (in sostanza la casella di testo apparirร  "pre-compilata" con il valore indicato). Esempio:

var paese = prompt("Dove sei nato?", "Italia");
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).