MSc-IT Study Material
June 2010 Edition

Computer Science Department, University of Cape Town

Writing Forms

This section explores the main elements found on HTML forms. This is done in a manner matching the way many people develop forms — a little bit at a time. The discussion of each form element involves both reading from your textbook as well as a practical activity. (Some of the activities will take considerable time.) You may prefer to postpone doing Activities 1-7 until you have reached the end of the section on submit and reset buttons.

Starting a Form

All forms start with the <FORM> tag and end with </FORM> All other form objects go between these two tags.

The form tag has two main properties: METHOD and ACTION.

METHOD refers to post or get. The post attribute will send the information from the form as a text document. The get attribute is used mostly with search engines, and will not be discussed. We will generally set METHOD="post".

ACTION usually specifies the location of the CGI script that will process the form data. We are not using CGI scripts, and are instead setting this attribute to an imaginary email address (which causes the form data to be emailed to that address).

 ACTION="mailto:put.your@email.address.here"
      

Putting these together gives us:

 <FORM METHOD="post" ACTION="mailto:put.your@email.address.here"></FORM>
      

To Do

Read about Forms in your textbooks.

Activity 1: Starting a Form

This is the first step in creating a form. You may build on this activity in later ones by using the document you create here as a starting point (or you may prefer to save each different form with a name corresponding to the activity). First, create a new HTML document called form.htm.

Enter the normal <HEAD> and <BODY> tags. Then include the following <FORM> tag:

  <FORM METHOD="post" ACTION="mailto:put.your@email.address.here">
	

Remember to close the form with the </FORM> tag. Press the return key a few times to move it down the page, as you will be entering further code.

Finally, view your work in a Web browser, but be warned: at the moment there is little to show!

Read Discussion of Activity 1 at the end of the Unit.

Single-line Text Entry

A single-line text entry allows the user to input a small amount of text, like a name or an email address.

This is achieved with the following:

 Please input your name: <INPUT TYPE="text" SIZE="40"
 MAXLENGTH="30" NAME="personal-name">
      

The tag has the following elements:

<INPUT> is the tag used for most of the form objects.

TYPE="text" sets the object to a single-line text field.

Size="40" sets the field to show 40 characters.

MAXLENGTH="30" means that only a total of 30 characters can be typed in this field.

NAME="personal-name" sets the text field's name to be personal-name (this information is part of the form data sent on for further processing). The name is required to identify the value data which will be associated with it. For example, if the text box was for an email address or telephone number, we might set this attribute with a more suggestive value, e.g. NAME="email" or NAME="tel-no". The easiest way to choose the name is simply to use the purpose of the field.

VALUE=... Another attribute, VALUE, can be used to place an initial text in the field. As might be expected, if this text is left unchanged it becomes the value associated with the NAME when the form is submitted. Putting an initial value in the field is usually not required, but can be used as a prompt. For example, the following HTML produces the figure that comes after it:

 Name: <INPUT TYPE="text" NAME="name" SIZE="35" 
 VALUE="---please type here---">
      

Do not confuse the use of 'name' when we refer to the NAME attribute of an <INPUT> tag with the possibility of using name as the text field's actual name, or 'Name' being used in a text field that prompts the user for their own name (as in the example immediately above).

Exercise 1

After the following HTML form has been rendered by a browser, a user enters their age. The form is subsequently submitted for processing to a CGI script. Write down the name/value pair that is sent to the server-side software.

Solution can be found at the end of the Unit.

To Do

From your textbooks and Internet resources, read about the types of text that you can set for a text-entry, such as password and hidden types. Look at the Additional Content and Activities Section for some on-line resources.

Activity 2: Single-line Text Entry

In the HTML document you created before (form.htm), or a new one (as you prefer), create

  1. A text field for your name that is 35 characters long.

  2. A text field for your email that is 40 characters long.

  3. Three text fields for your address, each 40 characters long, and an additional smaller field for your postal code.

Test your code to ensure that it produces something as shown below. You may find it convenient to implement and test each part of the form separately.

Read Discussion of Activity 2 at the end of the Unit.

Multi-line Text Entry

Although it is possible to type as much text as needed into a single line text field, it does become more practical to enter large amounts of text into a multiple-line input field. HTML calls these fields text areas, as in the example below:

This is achieved with using the <TEXTAREA></TEXTAREA> tags. They create a scrollable text area for larger amount of text:

 <TEXTAREA NAME="movie-comments" COLS="50" ROWS="5"></TEXTAREA>
      

NAME="movie-comments" supplies the text field with the given label. Here, because the example allows the user to write about movies, we have named the form element "movie-comments".

COLS="50" specifies the width, in characters, of the text area. Here 50 characters have been specified.

ROWS="5" specifies the height of the text area in rows. This examples specifies five columns.

Note that the text that should appear in the multi-line field is placed between the <TEXTAREA> and </TEXTAREA> tags. So, for example, users could be prompted to input their comments on a movie thus:

 <TEXTAREA NAME="movie-comments" COLS="50" ROWS="5"> 
---please enter your comments here--- </TEXTAREA>
      

This would produce the following:

No horizontal scroll bars are present in the above text area examples (just as there rarely are any in a Web browser). This is because, by default, text-wrapping is on. Wrapping is a feature that causes words that cannot fit within a window pane to be moved to the following line or row. Web browsers wrap text (and most other elements) so that when a window is resized, text is redistributed over subsequent lines. A WRAP attribute is available, and the its default value is WRAP="ON". You can change wrapping to off, which will cause a horizontal scroll bar to appear at the bottom edge of the text area.

Exercise 2

Change the HTML for the movie opinion text area so that the text does not wrap and a horizontal scroll bar is provide, as in the figure below:

Solution can be found at the end of the Unit.

To Do

Read about Text Area in your textbooks.

Activity 3: Multi-line Text Entry

In an HTML document do the following:

  1. Replace the address text fields with one text area large enough to hold the whole address. Use the facilities of the <INPUT> and <TEXTAREA> tags to prompt the user by including placeholder information in the text fields and text area.

  2. Now make the layout of the form more aesthetically pleasing by placing the form in a two-column table, with field labels (e.g. 'Name:', 'Email:') in the left hand column, and the widgets in the right-hand column.

  3. Think of three questions relating to the Internet that you might like to ask a user if you were a market researcher trying to gather user information. Create the additional text areas in your form to ask these questions.

Read Discussion of Activity 3 at the end of the Unit.

Radio Buttons

Radio buttons are often used on questionnaires to indicate a person's opinion, or their likes and dislikes. They can also be used for 'yes' or 'no' responses. Radio buttons should be used when only one answer from a set of possible answers may be chosen. This is best illustrated by example:

Example 1

This is achieved with:

  Do you like chocolate?
  <input type="radio" name="chocolate" value="yes">Yes
  <input type="radio" name="chocolate" value="no">No
	

Notice that the same name — chocolate — has been used for each element. This is necessary because when the form is submitted only the value of the currently selected radio button will be submitted with the given name. The software processing the data will either receive chocolate=yes or chocolate=no, which allows for straightforward processing.

Example 2

This is achieved with:

  Do you agree that the Earth orbits the Sun?<br>
  <INPUT TYPE="radio" NAME="orbits" VALUE="strongly_agree">Strongly 
    agree<BR>
  <INPUT TYPE="radio" NAME="orbits" VALUE="agree">Agree<BR>
  <INPUT TYPE="radio" NAME="orbits" VALUE="no_opinion">No opinion<BR>
  <INPUT TYPE="radio" NAME="orbits" VALUE="disagree">Disagree<BR>
  <INPUT TYPE="radio" NAME="orbits" VALUE="strongly_disagree">Strongly 
    disagree<BR>
	

The tag and its attributes are as follows.

<input> is the tag used for most of the form objects.

type="radio" sets the object to a radio button.

name="orbits" labels the entire set of radio buttons. This makes identifying the data easier. For example if the radio button was for the question 'Do you own an automobile?', you might set name="automobile"

VALUE=... With a set of radio buttons for one question, it is not enough to provide a name only. We need to give each radio button a value so that the form-processing software (CGI script or email) can determine which radio button has been selected. This is where the value attribute comes in. Each of the values above is set to the answer for that radio button. This information is sent with the data when the form is submitted. Hence, the form in the above figure would submit orbits=strongly_agree.

CHECKED This has not been used in the above example. If it were included, the button is set as if it had been clicked. This is useful is one choice should be made the default.

To Do

Read about Radio Buttons in your textbooks.

Activity 4: Radio Buttons

In an HTML document, add these numbered questions and create radio buttons for them.

  1. Do you like playing computer games? Yes / No

  2. How much did you enjoy the 'Star Wars' Trilogy? I enjoyed it / I did not enjoy it / I have not seen it

  3. Do you have an email address? Yes / No

  4. Chocolate is delicious? strongly agree / agree / neutral / disagree / strongly disagree

  5. Then create four more questions of your own choice that use radio buttons.

(While working on this activity, you might like to think how the form elements might interact with list structures.)

Read Discussion of Activity 4 at the end of the Unit.

Check Boxes

Checkboxes are one of the simplest objects that can be placed on a form. These input elements can only be selected and de-selected. Unlike radio buttons, more than one can be selected at a time.

For example, when signing up for a free e-mail account with GMail or Hotmail, a user may well have to fill in a series of forms. One of them is often an interests form, and looks something like this:

 <INPUT TYPE="checkbox" NAME="autos" VALUE="yes">Autos<BR>
 <INPUT TYPE="checkbox" NAME="business" VALUE="yes">Business & Finance<BR>
 <INPUT TYPE="checkbox" NAME="movies" VALUE="yes">Movies<BR>
 <INPUT TYPE="checkbox" NAME="music" VALUE="yes">Music<BR>
 <INPUT TYPE="checkbox" NAME="computing" VALUE="yes">Computers & Internet<BR>
 <INPUT TYPE="checkbox" NAME="science" VALUE="yes">Science<BR>
 <INPUT TYPE="checkbox" NAME="sports" VALUE="yes">Sports<BR>
      

<INPUT> is the tag used for most of the form objects.

type="checkbox" sets the object to a checkbox.

name is used to supply a name to the checkbox.

VALUE="yes" if the item is checked, this is the value that will be associated with the name when the form is submitted for processing. Hence, in the above example, yes will be associated with each of the name values movies, science and sports.

CHECKED This has not been used in the above examples. If it were included as an attribute of the tag, the check box would be set as if it had been clicked by the user. This is useful if one or more options are to be offered as defaults.

To Do

Read about Check Box in your textbooks.

Activity 5: Check Boxes

Imagine you are developing a website that sells various types of watch. You want to allow customers to select what they want to buy with a set of check boxes, as in the figure below.

Write an HTML form to achieve this (note the tabular layout). Remember that a server-side script may be expecting the prices of the checked items, so these values will need to be transmitted for processing.

Read Discussion of Activity 5 at the end of the Unit.

Menu Buttons and Scrolling Lists

Menu buttons and scrolling lists are useful when you have multiple options to choose from. For example, the following shows a menu button (sometimes imprecisely called a pull-down or drop-down menu). Clicking on the 'select a colour' option on the button displays all the other options in the button's menu. Pulling down to the required option will set the value for this element (for subsequent transmission).

If the menu button is near the bottom of a window, the menu pops up:

Notice that, by convention, the first option of a menu button is usually not an option at all, but a prompt to suggest an action to the user. Hence, in the previous example, 'select a colour' is not an option but a prompt. However, if the form containing this menu button were submitted for processing, the value 'select a colour' would be associated with the named attribute.

Scrolling lists, otherwise known as selection lists, are similar to menu buttons, but they usually display more than one of the available options at a time. They rarely show all options, and the user is required to scroll in order to view them all. If all the options are displayed, no scroll bar is included with the list, and it may not be obvious to the user that they should select an option.

The above example could be redesigned using a scrolling list. The figures below show the three options, and all six options (excluding the prompt):

One clear benefit of these two input elements are that they do not take up as much space as, say, a list of radio buttons. Like radio buttons, they are also used to select one choice one from a set of mutually exclusive options.

The HTML for the menu button and scrolling list (the three-option version) are given below:

Disk drive colour:<BR> <SELECT NAME="colour"> <OPTION>select a colour</OPTION> <OPTION>red</OPTION> <OPTION>blue</OPTION> <OPTION>green</OPTION> <OPTION>yellow</OPTION> <OPTION>purple</OPTION> <OPTION>orange</OPTION> </SELECT> <P>Please note that because of variations in the manufacturing process we cannot guarantee the shades of these colours. Customers may return drives whose colours are unacceptable for a small handling charge.</P>Disk drive colour:<BR> <SELECT NAME="colour" SIZE="3" MULTIPLE> <OPTION>red</OPTION> <OPTION>blue</OPTION> <OPTION>green</OPTION> <OPTION>yellow</OPTION> <OPTION>purple</OPTION> <OPTION>orange</OPTION> </SELECT> Please note that because of variations in the manufacturing process we cannot guarantee the shades of these colours. Customers may return drives whose colours are unacceptable for a small handling charge.</P>

<SELECT></SELECT> are used for both menu buttons and scrolling lists (the <INPUT> tag is not used).

name="colour" specifies the data name to be transmitted on form submission.

<OPTION></OPTION> are used to specify the option we want to appear in both types of menus.

size="3" This attribute sets the number of options that the scrolling list shows. In the above example, the number of options has been set to 3.

MULTIPLE This attribute guarantees that the <SELECT> tag results in a scrolling list rather than a menu button. It is not needed if SIZE is set to be greater than 1. However, if MULTIPLE is omitted and SIZE=1, or is omitted, the tag produces a menu button and not a scrolling list.

SELECTED This attribute can be included in an <OPTION> tag; it has not been used in the above examples. If it were included, the option is selected by default.

Exercise 3

A small Egyptian airline flies internally to Egypt while also offering flights to Kuwait, Lebanon, Bahrain, and Oman. Their new website is being developed to promote their business, especially the external services. The website should provide a list of destination options to users. Bearing in mind that most of the company's business is internal and that it wants to advertise its flights to other countries, select an appropriate selection mechanism and arrangement of options. Write the HTML.

A solution can be found at the end of the Unit.

To Do

Read about creating menus with the <SELECT> tag in your textbooks.

Activity 6: Menu Buttons and Scrolling Lists

In an HTML document:

  1. Create menu buttons for the following:

    • Title: Mr / Mrs / Miss/ Ms / Dr

    • Age: under 20 (<19) / 20—29 / 30—39 / 40—49 / 50—59 / over 60 (60>)

    • Gender: Male / Female

    • Status: Employed / Unemployed / Student

  2. Create scrolling menus to enter a date of birth using the following:

    • Day: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 151, 6, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31

    • Month: January, February, March, April, May, June, July, August, September, October, November, December

    • Year: 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996

Read Discussion of Activity 6 at the end of the Unit.

Submit and Reset Buttons

Submit and reset buttons have simple uses: they allow the user to send the form data onwards for processing, or to clear the form fields of all entered information.

For example: a user has ordered a large pizza on-line. They have entered four possible topping selections. To send the data for processing, the user clicks on the button labelled 'Order the pizza'. If the user were to make an error and wish to restart, clicking the button labelled 'Clear to restart' will remove the text from the multi-line text area and (as it happens) reset the choice of pizza size to 'Medium'.

The new elements in this example are the buttons labelled 'Order the pizza' and 'Clear to restart', which are submit and reset buttons respectively. When a submit button is clicked, the Web browser looks at the <form> tag to see how the data should be processed. It will either be sent as an email, as shown below, or sent for processing by a server-side script. Here is HTML for the above example:

<FORM METHOD="post" ACTION="mailto:pizza-orders@medpizzas.com.eg">
<P>We only use fresh ingredients and some pizza toppings
may not be available. We will supply three from your list.</P>
Please list preferred toppings in order:<BR>
<TEXTAREA NAME="toppings" COLS="40" ROWS="5" WRAP=OFF></TEXTAREA><br>
Pizza size:<BR>
<INPUT TYPE="radio" NAME="pizza_size" VALUE="small">Small<BR>
<INPUT TYPE="radio" NAME="pizza_size" VALUE="medium" CHECKED>Medium<BR>
<INPUT TYPE="radio" NAME="pizza_size" VALUE="large">Large<BR>
<INPUT TYPE="submit" VALUE="Order the pizza">
<INPUT TYPE="reset" VALUE="Clear to restart">
</FORM>
      

Buttons can be customised to perform other functions, such as navigation, by using JavaScript (developers mostly use images and text links for navigation, however) See the Extension section.

A submit button may, in fact, be replaced with an image. For instance, the above example can be modified as follows:

The <INPUT> tag for this submit button uses image as the value of the TYPE attribute and adds a SRC attribute to specify the image to be used, as in:

<INPUT TYPE="image" SRC="go-pizza-button.gif">
      

Clicking on an image used as if it were a submit button has exactly the same effect as a standard submit button, in that the form data is dispatched for processing.

Note that there is no corresponding facility to replace a reset button with an image.

To Do

Read about Submit and Reset Buttons in your textbooks.

Activity 7: Submit and Reset Buttons

Implement the check box example on personal interests and add submit and reset buttons. Test the reset button by checking several options and then clearing them by clicking Reset. To test the submit button, set the form (using the ACTION attribute) to send email to a real address.

Test how the submit button works when using the default encoding (see your textbook). You should receive a binary file attachment at the email address in the ACTION attribute. You can open this with a text editor (like Notepad).

Change the <FORM> tag to include the encoding ENCTYPE="text/plain" and resubmit the form. Examine the email to see how its contents have changed.

Read Discussion of Activity 7 at the end of the Unit.