Entwicklung multimedialer Anwendungen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 Fachbereich AI, Entwicklung multimedialer Anwendungen 1 Inhalt 1. Einleitung 2. Auszeichnungs-Tags / Semantische Elemente 3. Multimedia (Audio, Video) 4. CSS3 (Design) 5. SVG / Canvas 6. Tablet Ansteuerung (jQuery) 7. Geolocation Fachbereich AI, Entwicklung multimedialer Anwendungen 2 Typografische Tags • • • • • • • • • • abbr Abkürzung und Akronyme (MWSt. / NATO) • Attribut title als Hint b stilistisches Tag z. B. für Firmennamen (fett) bdi Text verläuft von rechts nach links bdo Textrichtung ändern • Attribut dir=rtl bzw. ltr cite Zitat für Werktitel (Elbauenpark) code Codierter Text (z. B. für Syntax-Highlight) dfn zu definierender Ausdruck, à la Buch em emphase, betont den Inhalt i stilistisches Tag, Fachausdrücke (kursiv) ins eingefügter Text (Varianten) Fachbereich AI, Entwicklung multimedialer Anwendungen html5\html5_bsp1.xhtml 3 Typografische Tags • • • • kdb Keybord • <kdb>ls –l [↵] </kdb> kbd { font-family: monospace; } mark markierter Text, z. B. nach einem Suchvorgang q Wörtliche Rede oder Zitat • ohne Anführungszeichen Fernöstliche Sprache: • rp Ruby-Klammer • rt Textteil einer Ruby-Annotation • ruby Ruby-Annotation Fachbereich AI, Entwicklung multimedialer Anwendungen 4 Typografische Tags • • • • • • • • • • • s gelöschter Text (Varianten), bleibt aber im Text del gelöschter Text (Varianten) samp stilistisches Tag • Beispielausgabe eines Programms small kleingedruckt span strong stilistisches Tag, besonders wichtig (fett) sub Tiefergestellt sup Höhergestellt u Nicht artikulierte Zusatzbemerkung zum Text var Frei wählbare Bezeichnernamen wbr manuelle Trennung Fachbereich AI, Entwicklung multimedialer Anwendungen 5 Globale Attribute der typografische Tags • • • • • • • • • • accesskey class contenteditable contextmenu data dir draggable dropzone hidden id Alt+O Editierbar? sp. Daten Direction Drag&Drop Drag&Drop • • • • • • • • • • • • Fachbereich AI, Entwicklung multimedialer Anwendungen inert itemid itemprop itemref itemscope lang itemtype spellcheck style tabindex title translate 6 Events • • • • • • • • • • • • • • • onabort oncancel onblur oncanplay oncanplaythrough onchange onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragexit ondragleave ondragover • • • • • • • • • • • • • • • ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange onforminput oninput oninvalid onkeydown onkeypress onkeyup onload Fachbereich AI, Entwicklung multimedialer Anwendungen 7 Events • • • • • • • • • • • • • onloadeddata onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress • • • • • • • • • • • • • onratechange onreadystatechange onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange onwaiting Fachbereich AI, Entwicklung multimedialer Anwendungen 8 Fachbereich AI, Entwicklung multimedialer Anwendungen 9 Fachbereich AI, Entwicklung multimedialer Anwendungen 10 Fachbereich AI, Entwicklung multimedialer Anwendungen 11 Fachbereich AI, Entwicklung multimedialer Anwendungen 12 Fachbereich AI, Entwicklung multimedialer Anwendungen 13 Fachbereich AI, Entwicklung multimedialer Anwendungen 14 Fachbereich AI, Entwicklung multimedialer Anwendungen 15 Fachbereich AI, Entwicklung multimedialer Anwendungen 16 Fachbereich AI, Entwicklung multimedialer Anwendungen 17 Fachbereich AI, Entwicklung multimedialer Anwendungen 18 Semantische Elemente • • main arcticle • • • • • • nav • • Kopfzeile für verschiedene Elemente Ein header-Element kann aber auch als Einstieg dienen section aside footer • • Dieses Tag schließt komplette Absätze etc. ein. Meist kann man es mit dem body-Tag verbinden. header • Hauptbereich Artikel Absätze Seitenleiste Fußzeile für verschiedene Elemente Ein footer-Element kann aber auch für die Hauptseite dienen Navigator-Element Ein nav-Element kann im Seitenheader oder unten platziert werden Auch können mehrere Navigationselemente verfügbar sein. Fachbereich AI, Entwicklung multimedialer Anwendungen 19 Semantische Elemente • • • • • • • • main arcticle header section aside footer nav Mit diesen Tag‘s kann man eine bessere Struktur innerhalb einer HTMLSeite erstellen. • • Barrierefreiheit Siri / Cortana / Google Now Fachbereich AI, Entwicklung multimedialer Anwendungen 20 Fachbereich AI, Entwicklung multimedialer Anwendungen 21 Fachbereich AI, Entwicklung multimedialer Anwendungen 22 Fachbereich AI, Entwicklung multimedialer Anwendungen 23 Weitere HTML5-Elemente • • • • nav datetime summary details Navigator-Element Inhalt ist ein Datum Summary ist die Zusammenfassung Mit „details“ erhält man erweiterte Blöcke Fachbereich AI, Entwicklung multimedialer Anwendungen 24 Summary / Details Fachbereich AI, Entwicklung multimedialer Anwendungen 25 Nav-Element • Eine Navigation wurde vor HTML5 mittels eine div-Tag‘s und einer ungeordneten Liste (list-style:none) erstellt. • Das neue Tag vereinfacht kaum die Erstellung einer Navigationsliste. • Man braucht trotzdem eine ungeordneten Liste (list-style:none). • Ein nav-Element kann im Seitenheader oder unten platziert werden • Auch können mehrere Navigationselemente verfügbar sein. • Auch hierarchische Navigationselemente sind möglich. Fachbereich AI, Entwicklung multimedialer Anwendungen 26 Verwendung eines Nav-Elementes • Liste der Inhalte (à la Wikipedia) • Scheint sinnvoll. • Schalter zur vorherigen / nächsten Seite • Auch diese Technik ist möglich. • Such-Element • • Sehr wichtig, gerade bei großen Seiten. Breadcrumbs (Brotkrümelnavigation) • • Design Pattern in HTML-UI Anzeige der einzelnen parent-Seiten Fachbereich AI, Entwicklung multimedialer Anwendungen clicks 27 Nav-Element <nav> <a href="Struktur.html" title="Struktur">Struktur</a> | <a href="Darstellung.html" title="Darstellung">Darstellung</a> | <a href="Formulare.html" title="Formulare">Formulare</a> | <a href="Verweise.html" title="Verweise">Verweise</a> </nav> <nav id="nav1"> <ul> <li><a href="Struktur.html" title="Struktur">Struktur</a></li> <li><a href="Darstellung.html" title="Darstellung">Darstellung</a></li> <li><a href="Formulare.html" title="Formulare">Formulare</a></li> <li><a href="Verweise.html" title="Verweise">Verweise</a></li> </ul> </nav> Fachbereich AI, Entwicklung multimedialer Anwendungen 28 Fachbereich AI, Entwicklung multimedialer Anwendungen 29 CSS Selektoren des Nav-Element nav a:visited, nav a:link, nav a:hover { text-decoration:none; } nav ul{ list-style-type: none; } Fachbereich AI, Entwicklung multimedialer Anwendungen 30 Progress-Element • Eine Progressbar dient zur Darstellung einer Fortschrittanzeige. • HTML4 • Realisiert mit verschiedenen Bildern • Oder mit div‘s und javaskript • • <dd class="left">77%</dd> HTML5 • <progress value="24" min=" 0" max="100" ></progress> Fachbereich AI, Entwicklung multimedialer Anwendungen 31 Progress-Element Fachbereich AI, Entwicklung multimedialer Anwendungen 32 function calc( value ) { "use strict;" if (! isNaN(value) ) { var zahl = parseInt(value); var progress = document.getElementById( "progress2" ); var posi=progress.value+zahl; if (posi>=0 && posi<=100) { progress.value = progress.value+zahl; } } } // ]]> </script> </head> <progress id="progress2" value="24" min="0" max="100" /> <form> <input type="button" value="dec" onclick="calc(-1)"/> <input type="button" value="inc" onclick="calc(+1)"/> </form> Fachbereich AI, Entwicklung multimedialer Anwendungen 33 Progress-Element in Firefox und IExplorer Fachbereich AI, Entwicklung multimedialer Anwendungen 34 Formularelemente in HTML 5 ■ ■ ■ ■ ■ ■ Datentyp für Emailadresse(n) Datentyp für URLs Datentypen für numerische Eingaben • Numerischer Wert • Bereichsdialogs Datentyp für Datumsangaben • Tag, Monat, Jahr • Datum und Zeit • Datum, Zeit, Woche Farbauswahl Sucheingabe Fachbereich AI, Entwicklung multimedialer Anwendungen 35 Formularelemente in HTML 5 ■ Datentyp für Emailadresse(n): • ■ Datentyp für URLs: • ■ ■ <input type="url" /> Datentypen für numerische Eingaben • <input type="number" /> • <input type="range" min="10" max="100" step="5" value="55" /> Auswahl einer Farbe • ■ <input type="email" /> <input type="color" /> Sucheingabe • <input type="search" name="search" /> Fachbereich AI, Entwicklung multimedialer Anwendungen 36 Formularelemente in HTML 5 ■Datentyp • • • • • • • für Datumsangaben <input type="day" /> <input type="month" /> <input type="year" /> <input type="datetime" /> Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde nach UTC (Weltzeit) <input type="date" /> Jahr, Monat, Tag ohne Zeitzone <input type="week" /> <input type="time" /> Stunde, Minute, Sekunde und Millisekunde ohne Zeitzone Fachbereich AI, Entwicklung multimedialer Anwendungen 37 Neue Datums und Zeit-Elemente Fachbereich AI, Entwicklung multimedialer Anwendungen 38 Neue Datums und Zeit-Elemente Fachbereich AI, Entwicklung multimedialer Anwendungen 39 Neue Datums und Zeit-Elemente Fachbereich AI, Entwicklung multimedialer Anwendungen 40 Neue Datums und Zeit-Elemente Fachbereich AI, Entwicklung multimedialer Anwendungen 41 Fachbereich AI, Entwicklung multimedialer Anwendungen 42 Chrome Fehlerhaft Ok • • • • day datetime datetime_local • • • Fachbereich AI, Entwicklung multimedialer Anwendungen date month week time 43 Opera Fehlerhaft Ok • • • • • Day year datetime datetime_local Fachbereich AI, Entwicklung multimedialer Anwendungen • • • date month week time 44 Firefox Fehlerhaft • Fachbereich AI, Entwicklung multimedialer Anwendungen ALLE 45 IExplorer Fehlerhaft • Fachbereich AI, Entwicklung multimedialer Anwendungen ALLE 46 Testroutinen: • • • • • • • • • • • • function function function function function function checkFormDayDate( value ) checkFormMonth( value ) checkFormYear( value ) checkFormDatetime( value ) checkFormWeek( value ) checkFormTime( value ) function absolutDay(day, month, year) function isSchaltjahr(year) function checkDate(day, month, year) function checkYear(year) function checkTime(hour, min, sec) function checkWeek(week, year) Fachbereich AI, Entwicklung multimedialer Anwendungen 47 function checkFormYear( value) { "use strict;" if ( isNaN(value) ) { alert("Falsches Jahresformat: \n"+value); return false; } else { year = parseInt(value); if (checkYear(year)) { alert("Year: "+year); return true; } else { alert("Falsches Jahresformat: \n"+value); return false; } } } Fachbereich AI, Entwicklung multimedialer Anwendungen function checkYear(year) { "use strict;" if (year<1900 || year>2200) return false; else return true; } 48 function checkFormTime( value) { "use strict;" var values = value.split(":"); if (values.length<2) { alert("Falsches Zeitformat: \n"+value); return false; } else { var hour, min, sec; if ( isNaN(values[0]) ) { alert("Falsches Zeitformat: \n"+value); return false; } else { hour= parseInt(values[0]); } if ( isNaN(values[1]) ) { alert("Falsches Zeitformat: \n"+value); return false; } else { min= parseInt(values[1]); } if (values.length==3) { if ( isNaN(values[2]) ) { alert("Falsches Zeitformat: \n"+value); return false; } else { sec= parseInt(values[2]); } } else { sec=0; } Fachbereich AI, Entwicklung multimedialer Anwendungen 49 if (checkTime(hour, min, sec)) { alert("Hour: "+hour+" Min: "+min +" Sec: "+sec); return true; } else { alert("Falsches Zeitformat: \n"+value); return false; } } // if (values.length<2) { } // checkFormTime function checkTime(hour, min, sec) { "use strict;" if (hour<0 || hour>23 ) return false; if (min<0 || min>59 ) return false; if (sec<0 || sec>59 ) return false; return true; } Fachbereich AI, Entwicklung multimedialer Anwendungen 50 function checkFormMonth( value ) { // März 2015 "use strict;" var values = value.split(" "); if (values.length<2) { alert("Falsches Monatsformat: \n"+value); return false; } else { var month, year; month = values[0]; if ( isNaN(values[1]) ) { alert("Falsches Monatsformat: \n"+value); return false; } else { year= parseInt(values[1]); } Fachbereich AI, Entwicklung multimedialer Anwendungen 51 if (!checkYear(year)) { alert("Falsches Monatsformat: \n"+value); return false; } var month2 = month.toLowerCase(); if (month2=="januar" || month2=="februar" || month2=="märz" || month2=="april" || month2=="mai" || month2=="juni" || month2=="juli" || month2=="august" || month2=="september" || month2=="oktober" || month2=="november" || month2=="dezember" ) { alert("Korrektes Monatsformat: \n"+"Monat: "+month+" Jahr: "+year); return true; } else { alert("Falsches Monatsformat: \n"+value); return false; } } // if (values.length<2) { } // checkFormMonth Fachbereich AI, Entwicklung multimedialer Anwendungen 52 function checkFormDayDate( value) { // 24.11.2015 "use strict;" var values = value.split("."); if (values.length<3) { alert("Falsches Datumsformat: \n"+value); return false; } else { var day, month, year; if ( isNaN(values[0]) ) { alert("Falsches Datumsformat: \n"+value); return false; } else { day = parseInt(values[0]); } Fachbereich AI, Entwicklung multimedialer Anwendungen 53 if ( isNaN(values[1]) ) { alert("Falsches Datumsformat: \n"+value); } else { month = parseInt(values[1]); } return false; if ( isNaN(values[2]) ) { alert("Falsches Datumsformat: \n"+value); return false; } else { year = parseInt(values[2]); } if (checkDate(day, month, year)) { alert("Day: "+day+" Month: "+month+" Year: "+year); return true; } else { alert("Falsches Datumsformat: \n"+value); return false; } } // if (values.length<3) { } Fachbereich AI, Entwicklung multimedialer Anwendungen 54 function checkDate(day, month, year) { "use strict;" var maxtage=0; if (day<=0 || day>31) return false; if (month<=0 || month>12) return false; if (year<1900 || year>2200) return false; switch (month) { case 1: case 3: case 4: case 7: case 8: case 10: case 12: maxtage=31; break; case 4: case 6: case 9: case 11: maxtage=30; break; case 2: var rest=year % 4; if (rest==0) { rest=year%100; if (rest==0) { rest=year%400; // check 1900 2000 if (rest==0) maxtage=29; else maxtage=28; } // if (rest==0) { else { maxtage=29; } } else maxtage=28; } // switch } // checkDate Fachbereich AI, Entwicklung multimedialer Anwendungen 55 function checkFormDatetime( value) { // 31.02.2015 10:66 "use strict;" var values = value.split(" "); if (values.length<2) { alert("Falsches DateTimeformat: \n"+value); return false; } else { if (!checkFormDayDate(values[0])) return false; if (!checkFormTime(values[1])) return false; return true; } // if (values.length<2) { } Fachbereich AI, Entwicklung multimedialer Anwendungen 56 function checkFormWeek( value) { "use strict;" var values = value.split(","); // "Woche 56", und "2015" if (values.length<2) { alert("Falsches DateWochenformat: \n"+value); return false; } var year; if ( isNaN(values[1]) ) { alert("Falsches Jahresformat: \n"+value); return false; } year=parseInt(values[1]); if (!checkYear(year)) { alert("Falsches Jahr: \n"+value); return false; } Fachbereich AI, Entwicklung multimedialer Anwendungen 57 checkFormWeek var week=values[0]; // Woche 56 var values = week.split(" "); // "Woche 56" if ( isNaN(values[1]) ) { alert("Falsches Monatsformat: \n"+value); return false; } week=parseInt(values[1]); if (checkWeek(week, year)) { alert("Woche: "+week+" Jahr: "+year); return true; } else { alert("falsche Woche"); return false; } } // checkFormWeek Fachbereich AI, Entwicklung multimedialer Anwendungen 58 function checkWeek(week, year) { "use strict;" if (week<0 || week>53) return false; if (year<1900 || year>2200) return false; var zeit1 = absolutDay(1, 1, 1900); // dies ist ein Montag var zeit2 = absolutDay(1, 1, year); var zeit3 = zeit2 - zeit1-1; var weekday = zeit3 %7; // 0=montag // wenn 1.1.year auf einem Donnerstag liegt, gibt es 53 Wochen var countWeeks; if (wochentag==3) countWeeks=53; else countWeeks =52; return week>0 && week<=countWeeks; } Fachbereich AI, Entwicklung multimedialer Anwendungen 59 function absolutDay(day, month, year) { var delta_tage = new Array(0,3,3,6,8,11,13,16,19,21,24,26); var j4, j100, j400; var f; if ( (day==0) || (month==0) ||(year==0) ) return 0; f=365.25*(year-1.0) +28.0*(month-1.0)+delta_tage[month-1]+day; if (month>2) { // 2000 ist Schaltjahr 1900 nicht j4=year % 4; j100=year % 100; // Schaltjahr wenn = 0 1900 oder 2000 j400=year % 400; // nun 2000 2400 if ( ((j4==0)&&(j100>0)) || (j400==0) ) f++; } return Math.floor(f); } // absolutDay Fachbereich AI, Entwicklung multimedialer Anwendungen 60 function checkWeek2(week, year) { "use strict;" if (week<0 || week>53) return false; if (year<1900 || year>2200) return false; var myDate = new Date(1,1,year); var weekday = myDate.getDay(); // 0=Montag // wenn 1.1.year auf einem Donnerstag liegt, gibt es 53 Wochen var countWeeks; if (weekday==3) countWeeks=53; else countWeeks=52; return week>0 && week<=countWeeks; } Fachbereich AI, Entwicklung multimedialer Anwendungen 61 Neue Telefon, Url und EMail-Elemente (IExplorer) Kaum Interaktion Fachbereich AI, Entwicklung multimedialer Anwendungen 62 Neue Telefon, Url und EMail-Elemente Kaum Interaktion Fachbereich AI, Entwicklung multimedialer Anwendungen 63 Neue Telefon, Url und EMail-Elemente Kaum Interaktion Fachbereich AI, Entwicklung multimedialer Anwendungen 64 Search-Element • • • Das search-Element hat eine eigene Liste Browser könnten das Suchfeld der aktuellen Seite zum Beispiel automatisch in die Suchleiste integrieren und auswählen Smartphones blenden beim Suchfeld auf eine Tastatur ein. Fachbereich AI, Entwicklung multimedialer Anwendungen 65 <label for="userID1" >Farbauswahl : <input type="color" name="color" id="userID1" /> </label> <br /><br /> <input type="button" value="farbe setzen" onclick="setColor(this.form)"/> Fachbereich AI, Entwicklung multimedialer Anwendungen 66 <label for="userID3" >Output: <output name="output"> </output> </label> <br /><br /> <input type="button" value="Farbe abfragen" onclick="checkColor(this.form)"/> function checkColor( form ) { "use strict;" form.tColor.value = form.color.value.toUpperCase(); var color=form.color.value.toUpperCase(); var red = color.substr(1,2); var green = color.substr(3,4); var blue = color.substr(5,6); // 1->2 color.substring(1,3) form.output.value = red+" "+green+" "+blue; } Fachbereich AI, Entwicklung multimedialer Anwendungen 67 Firefox Opera Chrome IExplorer Fachbereich AI, Entwicklung multimedialer Anwendungen 68 Output-Element • Ersatz für „ajax“-Elemente • Automatisches Berechnen • For-Attribute Fachbereich AI, Entwicklung multimedialer Anwendungen 69 Output-Element <h1>Output-Element</h1> <form onsubmit="return false" oninput="o.value = parseInt(a.value) + parseInt(b.value)"> <input name="a" type="number" step="any" /> + <input name="b" type="number" step="any"/> = <output name="o" /> </form> Fachbereich AI, Entwicklung multimedialer Anwendungen 70 Output-Element: bsp2, bsp3 <form onsubmit="return false" oninput="o.value = parseInt(a.value) + parseInt(b.value)"> <input name="a" id="a" type="number" step="any"/> + <input name="b" id="b" type="number" step="any"/> = <output name="o" for="a b" /> </form> valueAsNumber ist eine neue Methode, die den Wert als Zahl ausgibt. <form onsubmit="return false" oninput="o.value = a.valueAsNumber + b.valueAsNumber"> <input name="a" id="a" type="number" step="any"/> + <input name="b" id="b" type="number" step="any"/> = <output name="o" for="a b"/> </form> Fachbereich AI, Entwicklung multimedialer Anwendungen 71 •Bsp5: http://html5-webdesign.de/output.html Fachbereich AI, Entwicklung multimedialer Anwendungen 72 Range-Element • Anwender bestimmt interaktiv die Eingabe • Prozentuale, visuelle, Eingabe • Nicht alle Browser unterstützen die Anzeige des aktuellen Wertes (Abhilfe: output) Fachbereich AI, Entwicklung multimedialer Anwendungen 73 Range-Element <form onsubmit="return false" oninput="level.value = rangeInput.valueAsNumber"> <label for="forRange">Range Element</label> <input name="rangeInput" id="forRange" type="range" min="0" max="100" value="17" /> <output for="forRange" name="level">0</output>/100 </form> Fachbereich AI, Entwicklung multimedialer Anwendungen 74 Datelist-Element • Suggestion • Optionale Eingaben • Vergleichbar mit der ComboBox, aber keine festen Vorgaben Alte Technik <select name="objekte" > <option > Internet Explorer</option > <option selected="selected"> Firefox</option> <option > Chrome</option > <option > Opera</option > <option > Safari</option > </select> Neue Technik <input type="text" list="browsers2" value="Firefox" /> <datalist id="browsers2"> <option value="Internet Explorer"/> <option value="Firefox"/> <option value="Chrome"/> <option value="Opera"/> <option value="Safari"/> </datalist> Fachbereich AI, Entwicklung multimedialer Anwendungen 75 Fachbereich AI, Entwicklung multimedialer Anwendungen 76 Datelist-Element: Chrome • Funktioniert auch mit type="days" • "month", "week", und "date" nicht möglich Fachbereich AI, Entwicklung multimedialer Anwendungen 77 Datelist-Element: Chrome • Funktioniert auch mit type="week" Fachbereich AI, Entwicklung multimedialer Anwendungen 78 Datelist-Element: Chrome • Funktioniert auch mit type="year" Fachbereich AI, Entwicklung multimedialer Anwendungen 79 Datelist-Element: Chrome • Funktioniert auch mit type="datetime" und "datetime_local" Fachbereich AI, Entwicklung multimedialer Anwendungen 80 Datelist-Element: Chrome • Funktioniert auch mit type="time" Fachbereich AI, Entwicklung multimedialer Anwendungen 81 Validierung • autocomplete • autofocus • label • placeholder • required Fachbereich AI, Entwicklung multimedialer Anwendungen 82 Fachbereich AI, Entwicklung multimedialer Anwendungen 83 <form autocomplete="on" > <label for="userId" > Username <input type="text" title="Username für den Server" name="username" id="userId" value="" placeholder="Ihr Username" size="14" maxlength="10" autocomplete="on" autofocus="autofocus" required="required" /> </label> <label for="userId" > Password <!-- insert a form element --> <input type="text" title="Sinnvolles Passwort" name="password" id="userPassword" value="" placeholder="Ihr neues Passwort" autocomplete="on" size="14" maxlength="10" required="required" /> </label> <input type="submit" value="Send" /> <input type="reset" value="Delete"/> </form> Fachbereich AI, Entwicklung multimedialer Anwendungen 84