capturing user input n.
Skip this Video
Loading SlideShow in 5 Seconds..
Capturing user input: PowerPoint Presentation
Download Presentation
Capturing user input:

play fullscreen
1 / 38
Download Presentation

Capturing user input: - PowerPoint PPT Presentation

willis
123 Views
Download Presentation

Capturing user input:

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Capturing user input: Using HTML FORMs

  2. User input • Up till now, our HTML documents have all been directed at outputting information to the user • However, some applications of HTML involve inputting information from the user • possibly, to tailor future output to the user • or to populate a database of user data

  3. Example • On the next slide, the web page shown contains a form that the user may complete in order to send some information to a club that he wants to join • The form contains • two input boxes that the user can fill in and • a submit button that he can click on in order to send his data to the club’s web site

  4. Say he submits the data below:

  5. He gets the personalized reply below from the web site:

  6. How this is done: • There are two parts to what happens: • When the user clicks on the submit button, the data on the form is sent to a “server-side” program at the club’s web-site • The server-side program reads the data and writes a special HTML page which is sent back to the user’s browser

  7. Specifying the form that the user fills in: • In HTML, a form specification is delimited by two tags: <form> and </form> • Among the attributes of a <form> tag, two are especially important: • the action attribute specifies a URL for the program to which the data given by the user is to be sent • the method attribute specifies the way in which the data are to be sent to this program

  8. Example • The (partial) form specification below says that the data must be sent by a method called “post” to a program called appln.cgi in the cgi-bin directory on the server where the document containing the form is stored <form method=“post” action="/cgi-bin/appln.cgi"> …. </form>

  9. METHODs for sending data • There are two main METHODs: • POST • GET • You can ignore the details of these methods for now • they concern how the data is encoded when being transmitted across the Internet • you just need to remember that, in both methods, the data are sent in the form of equations of the form <name> = <value> for example name=Bill email=president@whitehouse.gov • We will use the POST method in our examples

  10. Grouping the elements of a form • As well as user-inputs, we can have headings etc. on a form • It is usually convenient to organize the user-inputs into groups of related elements • Such a group is called a fieldset: • a fieldset is delimited by two tags: <fieldset> and </fieldset> • Each fieldset can have a legend (a title) which helps the user to understand the form

  11. Example • The form below has one heading and two fieldsets • Each fieldset has a legend which is printed in the border around the fieldset

  12. Some more detail from the spec: <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> … ... </fieldset> <fieldset> <legend>Form Submission</legend> … ... </fieldset> </form>

  13. User-input elements • Several different kinds of user-input element are possible on a form: button, input, select, textarea • Only two main kinds are used on this form, • the input element and • the button element

  14. input elements • An input element has only one tag, the <input> tag • Every <input> tag has at least one attribute: the type attribute which can take one of many values: text password checkbox radio submitreset file hidden image button • The “greyed” values above (submit, reset, button) are probably on the way out as HTML develops • The other attributes that must be present depend of the value of the type attribute • most, however, must have a name attribute and • many must have a value attribute

  15. input elements of type=text • input elements whose type attribute have the value text are rendered as boxes in which the user can type a sequence of characters • input elements whose type attribute have one of the other values are rendered differently

  16. Some more detail ... <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=name> </p> <p> Please enter your email address: <input type=text name=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> … ... </fieldset> </form>

  17. The button element • button elements are rendered as button on which the user can click the mouse • a button element is delimited by a <button> tag and a </button> tag • The text between these tags is engraved on the button • The <button> tag has a type attribute which specifies what should happen when the user clicks on the button: • type=submit causes the user’s input to be sent to the program indicated in the form’s action • type=reset causes the user’s input to be cleared so that he may correct some mistakes • type=button causes a client-side event-handler to be executed

  18. The complete form specification: <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=name></p> <p> Please enter your email address: <input type=text name=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> <button type=submit>Submit application</button> </fieldset> </form>

  19. Stylesheet specification of FORMs rendering • FORMs, of course, can be handled in stylesheets, using the usual features • Example: <style> form {background-color : red; padding : 0.2in} fieldset {padding : 0.2in} </style>

  20. Complete Docum’nt Spec (Part I) <head> <title> Membership Application Form </title> <style> form {background-color : red; padding : 0.2in} fieldset {padding : 0.2in} </style> </head> <body> <p> If you want to join our club, complete the form below and we will get back to you. </p>

  21. Complete Docm’nt Spec (Part II) <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=name> </p> <p> Please enter your email address: <input type=text name=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> <p> <button type=submit>Submit application</button> </p> </fieldset> </form> </body> </html>

  22. Using a button element of type=button • On the next slide, there is an extra button element • It is of type=button because it is purely to enable a Javascript program to be executed so that a client-side check of the user’s data can be performed before the data are transmitted across the Internet

  23. Revised form specification: <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=name></p> <p> Please enter your email address: <input type=text name=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> <button type=button onclick=‘checkApplication()’>Check application</button> <button type=submit>Submit application</button> </fieldset> </form>

  24. Buttons are too close:

  25. Improve this in stylesheet <style> form {background-color : red; padding : 0.2in} fieldset {padding : 0.2in} button {margin : 0.1in} </style>

  26. What should happen when the ‘checkApplication’ function is executed • If either of the input boxes is still empty, a warning window should pop-up

  27. Writing the event-handler • There are two approaches to writing event handlers • the old (Microsoft) way; • The W3C-compatible way • We will look at the Microsoft way first • And then look at the W3C way

  28. The old (Microsoft) way • We need to be able to refer to the INPUTs on the form in order to see if they are empty or not • Each input has a name attribute so you might think that we could refer to the INPUTs directly by these NAMEs • However, Javascript requires that we refer to a form and then to the INPUTs on the form • So the form must have a name too

  29. Further revised specification: <form name=applicationForm method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=name></p> <p> Please enter your email address: <input type=text name=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> <button type=button onclick=‘checkApplication()’>Check application</button> <button type=submit>Submit application</button> </fieldset> </form>

  30. Specifying the event-handling function • We insert a SCRIPT containing the function definition in the document HEAD: <script> function checkApplication() {if (applicationForm.name.value=='') { alert("Name is empty") } ; if (applicationForm.email.value=='') { alert("Email address is empty") } } </script> • It contains two conditional statements each of which checks whether one input is empty and, if so, produces an alert saying so

  31. The W3C way • We need to be able to refer to the input elements on the form in order to see if they are empty or not • To refer to the various inputs, we must be able to use the getElementById method, so we must give id attributes to the input elements • Since all id attributes must be unique, we do not need to refer to the form at all, so it does not need an id attribute

  32. Further revised specification: <form method="post" action="/cgi-bin/appln.cgi"> <h1> Membership Application Form</h1> <fieldset> <legend>Contact Information</legend> <p> What is your name? <input type=text name=nameid=name></p> <p> Please enter your email address: <input type=text name=email id=email> </p> </fieldset> <fieldset> <legend>Form Submission</legend> <button type=button onclick=‘checkApplication()’>Check application</button> <button type=submit>Submit application</button> </fieldset> </form>

  33. Specifying the event-handling function • We insert a SCRIPT containing the function definition in the document HEAD: <script> function checkApplication() { var name= document.getElementById(‘name’); var email= document.getElementById(‘email’); if (name.value=='') { alert("Name is empty") } ; if (email.value=='') { alert("Email address is empty") } } </script> • It contains two conditional statements each of which checks whether one input is empty and, if so, produces an alert saying so

  34. Alternative specification <script> function checkApplication() {if (document.getElementById(‘name’).value=='') { alert("Name is empty") } ; if (document.getElementById(’email’).value=='') { alert("Email address is empty") } } </script>