Lecture # 6 Forms, Widgets and Event Handling Today 1. 2. 3. 4. 5. 6. Questions: From notes/reading/life? Share Personal Web Page (if not too personal) Introduce: How do we make web pages interactive? Explain: Forms, Widgets and Event Handling Demo: Interactive Web pages – follow along on laptop Practice: Your group will create an interactive web page Evaluate: Share and evaluate web pages Re-practice: Create your own web page with Lab # 3 Preview Lab # 3 Review Data Representation Understand Understand how web searching works Today 1. 2. 3. 4. 5. 6. Questions: From notes/reading/life? Share Personal Web Page (if not too personal) Introduce: How do we make web pages interactive? Explain: Forms, Widgets and Event Handling Demo: Interactive Web pages – follow along on laptop Practice: Your group will create an interactive web page Evaluate: Share and evaluate web pages Re-practice: Create your own web page with Lab # 3 Preview Lab # 3 Review Data Representation Understand Understand how web searching works How does a web page… • • • • Accept user input Include buttons, text boxes, labels, etc. Send information in a URL link Dynamically respond to the user Answer: Forms Forms Forms - requests to a web-site • • • • How to get information from the user When to send the request Where to send the request How to send the user’s information with the request <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> Labels <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> Labels How to get info from the user <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> Parts to an input tag • <input name=“N” size=20 value=“Q”> • Name - the name that this input information will be given • Size - the number of characters that the user can type • Value – what initially appears in the input When to send the request <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> When to send the request Where to send the request <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> How to send the user information in a URL <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> http://students.cs.byu.edu/cgi/findMe?firstName=Phred&lastName=Phinster How to send the user information in a URL <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> http://students.cs.byu.edu/cgi/findMe?firstName=Phred&lastName=Phinster How to send the user information in a URL <body> <h1>Example form</h1> <form action="http://students.cs.byu.edu/cgi/findMe"> First name <input name=firstName size=20 value="Phred"> <p> Last name <input name=lastName size=20 value="Phinster"> <p> <input type="submit" value="Find Me"> </form> </body> http://students.cs.byu.edu/cgi/findMe?firstName=Phred&lastName=Phinster Forms - How does the server respond? • Not every URL refers to a page • CGI - Common Gateway Interface • You can give a server a program and place it at a URL. • The server will then run the program and return its result rather than fetch a page CGI Programs • After the user enters the information, they press the “submit” button to send the information to the web server • The <form action=“URL”> attribute tells the web browser where to send the information • The action URL is the address of a CGI program that is running on a web server • The CGI program reads the user input sent by the browser, and then sends a dynamically generated HTML page back to the browser • This is what Google does when you do a Google search Server-side Scripting • Information is sent to the web server, often through the URL • There is a CGI program running on the web server • The CGI program runs using the user input • The server sends a dynamically generated HTML page back to the client browser Client-side Scripting • Not all HTML forms contact a CGI program on a web server • Some forms execute entirely on the client computer • The “program” is included as part of the HTML page that contains the form, and is executed by the browser • This program is sometimes called a “script”, and is written in a programming language named JavaScript • Many web sites use a combination of CGI programs and client-side scripting HTML Form Widgets Pizza Order Demo HTML Form Widgets • • • • • • Text Box Button Check Box Radio Buttons Text Area Selection List Text Box • <input type=“text”> • Attributes – size (the width of the text box in characters) – maxlength (the maximum number of characters the user is allowed to type in the text box) – name (the name of the variable used to reference the text box from JavaScript) – value (the string currently in the text box) Problem: What if we want to put text boxes, buttons, check boxes, etc. in nice, neat rows and columns? How can we do this? Text Box Demo <tr> <td><h2>Text Box</h2></td> <td>Title: <input type="text" size="20" maxlength="30" name="title" value=""></td> </tr> Button • <input type=“button”> • Attributes – value (string label on the button) – name (the name of the variable used to reference the button from JavaScript) Button Demo <tr> <td><h2>Button</h2></td> <td><input type=“button" value=“GO!” name=“go"></td> </tr> Check Box • <input type=“checkbox”> • Attributes – checked (if this attribute is present, the box will be checked when the form loads) – name (the name of the variable used to reference the check box from JavaScript) Check Box Demo <tr> <td><h2>Check Box</h2></td> <td>US Citizen: <input type=“checkbox” name=“citizen” checked=“”></td> </tr> Radio Buttons • <input type=“radio”> • Attributes – checked (if this attribute is present, the radio button will be selected when the form loads) – name (the name of the variable used to reference the radio button from JavaScript) • NOTE: All radio buttons in the same group must be given the same name Radio Buttons Demo <tr> <td><h2>Radio Buttons</h2></td> <td> Freshman<input type="radio" name="year" checked=""> Sophomore<input type="radio" name="year"> Junior<input type="radio" name="year"> Senior<input type="radio" name="year"> </td> </tr> Text Area • <textarea>The value string goes here between the tags</textarea> • Attributes – cols (the width of the text area in characters) – rows (the height of the text area) – name (the name of the variable used to reference the text area from JavaScript) Text Area Demo <tr> <td><h2>Text Area</h2></td> <td><textarea cols="20" rows="10" name="address">Type your address here.</textarea></td> </tr> Selection List <select> <option>Option 1 <option>Option 2 … </select> Selection List • <select> • Attributes – size (the number of options that should be visible) – name (the name of the variable used to reference the selection list from JavaScript) • <option> • Attributes – selected (if this attribute is present, the option will be selected when the form loads) Selection List Demo <tr> <td><h2>Selection List</h2></td> <td> <select name="color" size="1"> <option selected="">red <option>green <option>blue <option>cyan <option>magenta <option>yellow </select> </td> </tr> Event Handling • Now that we have this nice form, there’s only one problem – it doesn’t do anything! Event Handling • We add behavior to HTML forms by adding “event handlers” to widgets • An event handler is a little program that is run whenever a particular event occurs in a widget • Examples of events: onClick for buttons, onChange for text boxes • Example event handler: When this button is clicked, compute the tax and total for the order Event Handling • Each type of HTML form widget has “event handler attributes” • The value of an event handler attribute is a JavaScript program that describes the actions to be performed when that particular event occurs in the widget Event Handling Demo <form name=demoform> <tr> <td><h2>Text Box</h2></td> <td>Title: <input type="text" size="20" maxlength="30" name="title" value="" onChange="window.alert(demoform.title.value)" > </td> </tr> <tr> <td><h2>Button</h2></td> <td><input type="button" value="GO!" name="go" onClick="window.alert(demoform.go.value)" > </td> </tr> </form> Event Handling • We’ll learn a lot more about event handling in a future lecture, when we learn the basics of JavaScript programming • Once we’ve learned about JavaScript, we’ll be able to add interesting behavior to our HTML forms Today 1. 2. 3. 4. 5. 6. Questions: From notes/reading/life? Share Personal Web Page (if not too personal) Introduce: How do we make web pages interactive? Explain: Forms, Widgets and Event Handling Demo: Interactive Web pages – follow along on laptop Practice: Your group will create an interactive web page Evaluate: Share and evaluate web pages Re-practice: Create your own web page with Lab # 3 Preview Lab # 3 Review Data Representation Understand Understand how web searching works Personal Exercise • Create a Text Box with a Title and a Label that looks like this: • And a button with a Title and a Label that looks like this: • Type Hi in the text box and make sure that works • When you click on the “BYE” button, make the Text Box say “BYE” • You have 10 minutes Problem: Searching the Internet • How do you find a web page if you don’t know the URL? • One of the more popular search engines is Google Search • How do we describe the page that we want? Search • How does Google know where that page is? • WEB CRAWLERS: – Find as many web pages as you can – For each web page prepare a list of words on that page – For each word in all of the web keep a list of pages that have that word How does your browser ask for the search Problems with word searches • Search for “doctor” • • • • • What about pages with the word “doctors”? What about pages with the word “physicians”? What about pages about “witch doctors”? What if the page only has a picture of a doctor? What if the only use of the word doctor is in a picture? Blocking pornography • The reverse of the search problem • I don’t want pages that have this – How do you describe what you don’t want? Blocking pornography • Keep a list of all bad sites – If site is on the black list then refuse to make an Internet connection – What if someone creates a new site? • Keep a list of bad words and block any URL or page that has those words – – – – What about “Middlesex, England”? What about “breast cancer”? What about slang words? What about pictures? Summarize • It is hard to find all the pages someone might be interested in • It is hard to NOT find pages someone is never interested in • Mistakes are often made, you can’t be 100% right Static vs. Dynamic • Sometimes the information we want displayed on a web page varies from time to time and from user to user • So far, all our web pages have been static, i.e. always looks the same • Some web pages, like a Google result page, are dynamic, i.e. different each time