• Non ci sono risultati.

• Interazione: • Svariati “controlli”: • Rendono XHTML “interattivo” in modo semplice: Forms

N/A
N/A
Protected

Academic year: 2021

Condividi "• Interazione: • Svariati “controlli”: • Rendono XHTML “interattivo” in modo semplice: Forms"

Copied!
34
0
0

Testo completo

(1)

Forms

• Rendono XHTML “interattivo” in modo semplice:

▪ Commercio elettronico

▪ Registrazione di nuovi membri (organizzazioni non-profit)

▪ Ricerca di mercato (collezione di dati relativi a utenti)

• Svariati “controlli”:

▪ Riquadri di input di testo

▪ Caselle di scelta multipla

▪ Menu a scorrimento

▪ Pulsanti

• Interazione:

<form ... >

...

</form>

Controlli + contenuto “regolare”

(2)

Tag <form>

• Attributi principali:

action: URL della applicazione che processa i dati del form compilato

method: modalità con cui i dati sono spediti al server (post o get)

Non esiste formattazione predefinita degli elementi del form: trattati come (piccole) immagini nel testo → necessario usare liste, tabelle, fogli di stile, …

method="post": contatto del server + spedizione dei dati separata (nascosta)

method="get": contatto e spedizione dei dati in un unico passo (dati “appesi” all’URL della action come parametri)

Laboratorio di Modellazione Virtuale II Forms 2

<form action="http://www.bookstore.com/applications/search.php" method="post">

...

</form>

(3)

Post o Get ?

• Quando il server accetta entrambe le modalità di spedizione, quale scegliere?

Piccoli form → get (più efficiente)

Grossi form (o campi estesi) → post (limitazioni sulla lunghezza max della stringa di parametri passati alla applicazione)

Pb di sicurezza → post (dati crittografati nella spedizione, mentre get rende visibili i parametri nell’URL → spedizione “in chiaro”)

Se necessario invocare l’applicazione sul server al di fuori del form → get

Bookmark della pagina generata automaticamente dalla applicazione che

processa il form → get

(4)

Esempio di Form: form1.html

Laboratorio di Modellazione Virtuale II Forms 4

(5)

Esempio di Form: form1.html (ii)

<form action="http://www.bookstore.com/applications/search.php" method="post">

<p>

Name: <input type="text" name="name" size="32" maxlength="80" />

</p>

<p>

Subject: <input type="text" name="subject" size="50" maxlength="120" />

</p>

<p>

Continent:

<input type="radio" name="cont" value="af" /> Africa <input type="radio" name="cont" value="am" /> America <input type="radio" name="cont" value="as" /> Asia <input type="radio" name="cont" value="eu" /> Europe <input type="radio" name="cont" value="oc" /> Oceania </p>

<p>

Number of books read in a year:

<select name="num" size="1">

<option>No more than 3</option>

<option>From 4 to 10</option>

<option>From 11 to 20</option>

<option>More than 20</option>

</select>

</p>

<p>

<input type="submit">

(6)

Tag <input>

Per creare svariati tipi di controllo →

Valori principali per l’attributo type :

▪ text: input testuale su una linea

▪ password: input nascosto su una linea

▪ file: upload di un file (tipicamente, mediante browsing)

▪ checkbox: input mediante caselle di scelta

▪ radio: input mediante pulsante radio

▪ submit: pulsante testuale di invio del form

▪ image: pulsante grafico di invio del form

▪ reset: pulsante di reset del form

• Ulteriori tag di controllo:

▪ <button>: pulsante “graficamente strutturato” di submit o reset

▪ <textarea>: input testuale multilinea

▪ <select>: input mediante menu scorrevole

Laboratorio di Modellazione Virtuale II Forms 6

<input type="..." />

(7)

Tipici Attributi per Controlli

cols checked maxlength multiple name readonly rows size src value wrap

text X

password X

file X

checkbox X X

radio X X

submit

image X

reset

<button> X

<textarea> X

<select> X

X = obbligatorio

= opzionale

(8)

Input Testuale su Linea: form_input_text.html

Laboratorio di Modellazione Virtuale II Forms 8

(9)

Input Testuale su Linea: form_input_text.html (ii)

• Inserimento di una singola linea di testo:

<form action="http://www.register.com/reg.php" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

<p>

Via: <input type="text" name="via" size="30" />

Numero: <input type="text" name="numero" size="4" />

</p>

<p>

CAP: <input type="text" name="cap" size="5" maxlength="5" />

Citt&agrave;: <input type="text" name="citta" size="20" />

Stato: <input type="text" name="stato" size="10" value="Italia" readonly="readonly" />

</p>

<p>

Telefono: <input type="text" name="tel" size="18" value="030 123456789" />

</p>

<p>

Codice Fiscale: <input type="text" name="cf" size="20" maxlength="16" />

</p>

</form>

<input type="text" ... />

(10)

Input Nascosto su Linea: form_input_password.html

Laboratorio di Modellazione Virtuale II Forms 10

(11)

Input Nascosto su Linea: form_input_password.html (ii)

• Inserimento di una singola linea di testo:

NB : Non sicuro! (testo oscurato solo sul monitor)

<input type="password" ... />

<form action="http://www.register.com/login.php" method="post">

<p>

Login: <input type="text" name="log" size="20" />

</p>

<p>

Password: <input type="password" name="pass" size="15" />

</p>

</form>

(12)

Upload di File: form_input_file.html

Laboratorio di Modellazione Virtuale II Forms 12

(13)

Upload di File: form_input_file.html (ii)

• Meccanismo per la selezione ed invio di un file:

• Vincoli su attributi del form:

enctype="multipart/form-data"

method="post"

<input type="file" ... />

<form action="http://www.register.com/upload.php"

enctype="multipart/form-data"

method="post">

<p>

Name: <input type="text" name="text" size="20" />

</p>

<p>

Contribution: <input type="file" name="contr"

size="40" maxlength="80" />

</p>

</form>

(14)

Input Casella di Scelta: form_input_checkbox.html

Laboratorio di Modellazione Virtuale II Forms 14

(15)

Input Casella di Scelta: form_input_checkbox.html (ii)

• Crea una casella di scelta:

<input type="checkbox" ... />

<form action="http://www.statistica.org/questionario.php" method="post">

<h2>Lingue parlate</h2>

<input type="checkbox" name="lingue[]" value="ita" checked="checked" /> Italiano <input type="checkbox" name="lingue[]" value="ing" /> Inglese

<input type="checkbox" name="lingue[]" value="fra" /> Francese <input type="checkbox" name="lingue[]" value="ted" /> Tedesco <input type="checkbox" name="lingue[]" value="spa" /> Spagnolo <input type="checkbox" name="lingue[]" value="altro" /> Altro <h2>Sport praticati</h2>

<input type="checkbox" name="sport[]" value="calcio" /> Calcio <input type="checkbox" name="sport[]" value="tennis" /> Tennis <input type="checkbox" name="sport[]" value="nuoto" /> Nuoto

<input type="checkbox" name="sport[]" value="ciclismo" /> Ciclismo

<input type="checkbox" name="sport[]" value="pallacanestro" /> Pallacanestro <input type="checkbox" name="sport[]" value="sci" /> Sci

<input type="checkbox" name="sport[]" value="altro" /> Altro <h2>Luoghi di vacanza</h2>

<input type="checkbox" name="vacanze[]" value="mare" checked ="checked" /> Mare

<input type="checkbox" name="vacanze[]" value="montagna" checked ="checked" /> Montagna <input type="checkbox" name="vacanze[]" value="campagna" /> Campagna

<input type="checkbox" name="vacanze[]" value="citta" /> Citt&agrave;

(16)

Input Pulsante Radio: form_input_radio.html

Laboratorio di Modellazione Virtuale II Forms 16

(17)

Input Pulsante Radio: form_input_radio.html (ii)

• Crea un pulsante radio attivabile/disattivabile:

<input type="radio" ... />

<form action="http://www.journal.com/evaluation.php" method="post">

<table cellpadding="20">

<tr>

<th></th>

<th>Insufficiente</th>

<th>Sufficiente</th>

<th>Discreto</th>

<th>Buono</th>

<th>Ottimo</th>

</tr>

<tr>

<th>Contenuto</th>

<td><input type="radio" name="contenuto" value="i" /></td>

<td><input type="radio" name="contenuto" value="s" /></td>

<td><input type="radio" name="contenuto" value="d" /></td>

<td><input type="radio" name="contenuto" value="b" /></td>

<td><input type="radio" name="contenuto" value="o" /></td>

</tr>

...

</table>

(18)

Pulsante di Invio: form_input_submit.html

Laboratorio di Modellazione Virtuale II Forms 18

(19)

Pulsante di Invio: form_input_submit.html (ii)

• Creazione di un pulsante di invio del form:

<input type="submit" ... />

<form action="mailto:lamperti@ing.unibs.it" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

<p>

Via: <input type="text" name="via" size="30" />

Numero: <input type="text" name="numero" size="4" />

</p>

<p>

CAP: <input type="text" name="cap" size="5" maxlength="5" />

Citt&agrave;: <input type="text" name="citta" size="20" />

Stato: <input type="text" name="stato" size="10" value="Italia"

readonly="readonly" />

</p>

<p>

Telefono: <input type="text" name="tel" size="18" value="030 123456789" />

</p>

<p>

Codice Fiscale: <input type="text" name="cf" size="20" maxlength="16" />

</p>

<p>

(20)

Pulsante Immagine: form_input_image.html

Laboratorio di Modellazione Virtuale II Forms 20

(21)

Pulsante Immagine: form_input_image.html (ii)

• Creazione di un pulsante immagine (submit):

<input type="image" ... />

<form action="mailto:lamperti@ing.unibs.it" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

<p>

Via: <input type="text" name="via" size="30" />

Numero: <input type="text" name="numero" size="4" />

</p>

<p>

CAP: <input type="text" name="cap" size="5" maxlength="5" />

Citt&agrave;: <input type="text" name="citta" size="20" />

Stato: <input type="text" name="stato" size="10" value="Italia"

readonly="readonly" />

</p>

<p>

Telefono: <input type="text" name="tel" size="18" value="030 123456789" />

</p>

<p>

Codice Fiscale: <input type="text" name="cf" size="20" maxlength="16" />

</p>

(22)

Pulsante di Reset: form_input_reset.html

Laboratorio di Modellazione Virtuale II Forms 22

(23)

Pulsante di Reset: form_input_reset.html (ii)

• Creazione di un pulsante di reset del form:

<input type="reset" ... />

<form action="mailto:lamperti@ing.unibs.it" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

<p>

Via: <input type="text" name="via" size="30" />

Numero: <input type="text" name="numero" size="4" />

</p>

<p>

CAP: <input type="text" name="cap" size="5" maxlength="5" />

Citt&agrave;: <input type="text" name="citta" size="20" />

Stato: <input type="text" name="stato" size="10" value="Italia"

readonly="readonly" />

</p>

<p>

Telefono: <input type="text" name="tel" size="18" value="030 123456789" />

</p>

<p>

Codice Fiscale: <input type="text" name="cf" size="20" maxlength="16" />

</p>

(24)

Button: form_button.html

Laboratorio di Modellazione Virtuale II Forms 24

(25)

Button: form_button.html (ii)

• Pulsante “graficamente complesso” di submit o reset:

<button ...>

...

</button>

<form action="mailto:lamperti@ing.unibs.it" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

...

<p>

<button type="reset">

<table cellpadding="5">

<tr>

<td><img src="../immagini/grano.jpg" height="50px" /></td>

<td><img src="../immagini/giardino.jpg" height="50px" /></td>

</tr>

<tr>

<td colspan="2">Cancella modulo!</td>

</tr>

<tr>

<td><img src="../immagini/ramo.jpg" height="50px" /></td>

<td><img src="../immagini/kand.jpg" height="50px" /></td>

</tr>

</table>

(26)

Input Testuale Multilinea: form_textarea.html

Laboratorio di Modellazione Virtuale II Forms 26

(27)

Input Testuale Multilinea: form_textarea.html (ii)

• Creazione di un riquadro di input testuale su più linee:

Attributo wrap:

gestione interruzione di linea (off, virtual, physical)

<textarea>

...

</textarea>

<form action="http://www.register.com/profiles.php" method="post">

<p>

Tell us about you:

</p>

<p>

<textarea rows="3" cols="20" wrap="off">Write your profile here ...</textarea>

</p>

<p>

Send us your requests:

</p>

<textarea rows="5" cols="30" wrap="virtual">Write your requests here ...</textarea>

</p>

<p>

Share your experience:

</p>

<p>

<textarea rows="4" cols="40" wrap="physical">Write your experience here ...</textarea>

</p>

(28)

Input Menu Scorrevole: form_select.html

Laboratorio di Modellazione Virtuale II Forms 28

(29)

Input Menu Scorrevole: form_select.html (ii)

• Creazione di un menu scorrevole con scelta (anche multipla):

<select>

...

</select>

<form action="http://www.journal.com/evaluation.php" method="post">

<table cellpadding="10">

<tr>

<th>Contenuto</th>

<td>

<select name="contenuto">

<option>Insufficiente</option>

<option selected="selected">Sufficiente</option>

<option>Discreto</option>

<option>Buono</option>

<option>Ottimo</option>

</select>

</td>

</tr>

...

<tr>

<td><input type="reset" name="reset" value="Cancella!"></td>

</tr>

</table>

(30)

Input Menu Scorrevole: form_select_multiple.html

Laboratorio di Modellazione Virtuale II Forms 30

(31)

Input Menu Scorrevole: form_select_multiple.html (ii)

• Scelta multipla:

<select multiple="multiple"> ... </select>

<form action="http://www.journal.com/evaluation.php"method="post">

<table cellpadding="10">

<tr>

<th>Lingue parlate</th>

<th>Sport praticati</th>

<th>Luoghi di vacanza</th>

</tr>

<tr>

<td>

<select name="lingue[]" multiple="multiple" size="3">

<option selected="selected">Italiano</option>

<option>Inglese</option>

<option>Francese</option>

<option>Tedesco</option>

<option>Spagnolo</option>

<option>Altro</option>

</select>

</td>

...

</table>

(32)

Raggruppamento di Controlli: form_fieldset.html

Laboratorio di Modellazione Virtuale II Forms 32

(33)

Raggruppamento di Controlli: form_fieldset.html (ii)

Crea un riquadro di raggruppamento di controlli (simile a <div>):

<form action="http://www.register.com/reg.php" method="post">

<p>

Nome: <input type="text" name="nome" size="15" />

Cognome: <input type="text" name="cognome" size="20" maxlength="50" />

</p>

<fieldset>

<legend>Indirizzo</legend>

<p>

Via: <input type="text" name="via" size="30" />

Numero: <input type="text" name="numero" size="4" />

</p>

<p>

CAP: <input type="text" name="cap" size="5" maxlength="5" />

Citt&agrave;: <input type="text" name="citta" size="20" />

Stato: <input type="text" name="stato" size="10"

value="Italia" readonly="readonly" />

</p>

</fieldset>

<p>

Telefono: <input type="text" name="tel" size="18" value="030 123456789" />

</p>

(34)

Esercizio

Laboratorio di Modellazione Virtuale II Forms 34

Pulsante di invio

Opzioni:

▪ bassissimo

▪ basso

▪ medio

▪ alto

▪ altissimo

Opzioni:

▪ 19-21

▪ 22-24

▪ 25-28

▪ 29-31

▪ 31-34

▪ 35-37

▪ più di 37

Riferimenti

Documenti correlati

I trattamenti dei dati richiesti all'interessato sono effettuati ai sensi dell'art. e) del regolamento UE 2016/679 per finalità istituzionali* relative alla richiesta di

altresì considerando nn. 75 e 76), ha correttamente accordato un accesso civico parziale, volto ad evitare l’ostensione di dati e informazioni che possano rivelare,

MIRAGE è in grado di visualizzare, sullo schermo di un TabletPC collegato ad un sistema di localizzazione, la sovrapposizione in tempo reale delle immagini catturate

GeoServer 1 è un server open source rilasciato sotto licenza GPL (Free Software Foundation, 1991) per la gestione e la disseminazione di dati geospaziali secondo specifiche

Infatti, se, usando come termine noto 1 invece di (1 −σ k ) nel vincolo del caso k = v, si generasse questo traffico, non si avrebbe nessun altro vincolo sul nodo k stesso per

Per poter adempiere alle disposizioni normative in materia di protezione dei dati personali, l'Istituto ha realizzato una applicazione finalizzata al censimento e alla

Formato testuale per l'interscambio di tabelle, le cui righe corrispondono a linee e i cui valori delle singole colonne sono separati da una virgola (o punto e virgola )..

Gli operatori di rete che intendano installare elementi di rete di comunicazione elettronica ad alta velocità hanno diritto ad accedere, a condizione che abbiano fornito i dati