Learn ASP.NET Web Forms and ASP.NET MVC. Intensive courses for professional developers. Conducted by Bipin Joshi in Thane. Read more details here.
Untitled 1

HTML5 Form features you should know

Introduction

In the past few articles (Introduction to HTML5 for ASP.NET Developers, Using HTML5 input types in ASP.NET and Working with HTML5 Canvas) I discussed HTML5 features that every ASP.NET developer should be aware of. In this article I will focus on HTML Forms and discuss some enhancements that make your life easy. Merely using various <input> types is just one part of the story. You should also know HTML5 features that are applicable to the form as a whole. This article illustrates some such features. All the examples use Chrome as a browser but many can be tested in Safari, Opera and others.

Dealing with Required Fields

Many data entry forms expect that some value must be entered in textboxes. To enforce this requirement, ASP.NET developers often use RequiredFieldValidator control. HTML5 includes an easy alternative to indicate mandatory data entry fields. Consider the following markup:

<input id="firstName" type="text" name="firstName" required/>

Noticed that "required" at the end of <input> element? This is how HTML5 specifies that the given field is mandatory. If you don't supply any value for the firstName textbox, browser will show an error message and refuse to submit the form even if you have not written any validation script. The following figure shows how Chrome shows the error message:

You can also customize the default appearance of required fields. For example, many times developers show * mark to indicate required fields. To customize the appearance, you need to add a CSS class like this:

input:required
{
    border: 1px red solid;
    background-color: #FFFF00;
}

Now your required form fields will be displayed as shown below:

Setting Autofocus

HTML5 autofocus attribute sets the initial focus to a field marked with autofocus attribute. Autofocus attribute is used as follows:

<input id="lastName" type="text" name="lastName" required size="50" autofocus />

The following figure shows how lastName field gets the initial focus instead of firstName due to autofocus attribute:

Displaying "watermark" text using Placeholders

Many times you want to specify to the user what kind of data is to be entered in a field. For example, if you want the user to enter a telephone number, you may consider giving an example phone number that shows the format in which the number is to be entered. Normally, developers use separate Labels to specify this information. More elegant approach is, however, HTML5 placeholder that allows you to specify such help text. Consider the following form:

Notice how First Name field shows some text as a "watermark". When the textbox gets the focus the text disappears automatically. This is done using placeholder as shown below:

<input id="firstName" type="text" name="firstName" 
placeholder="Must be min. 3 characters. Only alpha allowed."  
required 
size="50"/>

Notice how Placeholder attribute specifies a string that appears in the textbox. 

Pattern Matching

New input types of HTML5 take care of many of the formats reducing the need to explicitly validate the firlds but at times you need to some custom format. For example, you may want to accept currency values in a specific format. That is where Pattern attribute of HTML5 comes into picture. It takes any regular expression and validates entered value against it. The following example shows how the pattern attribute is used:

<input id="firstName" type="text" name="firstName" 
required pattern="^\s*([a-zA-Z]+)\s*$"/>

Notice how the regular expression specified by the pattern attribute ensures that only alphabets are allowed. If you try to enter number in the firstName field the browser will give an error as shown below:

Setting Form Action and Form Method via Button

Normally, you would set action and method attributes of a form element to indicate the action URL and form submission method (GET/POST). HTML5 allows you to set these values from an input type submit or button. The following markup shows how: 

<input id="Submit1" type="submit" value="Submit" 
formaction="/home/index2" formmethod="post" />

The above markup is taken from an ASP.NET MVC view named Index. By default the form submits to Index() action method. Using formaction attribute of the Submit button you changed it to Index2() action method. You can also set formmethod attribute to set form method. The two action methods are shown below:

[HttpPost]
public ActionResult Index(string firstName,string lastName)
{
    ViewBag.Message = "Welcome " + firstName + " " + lastName;
    return View();
}

[HttpPost]
public ActionResult Index2(string firstName, string lastName)
{
    ViewBag.Message = "Hello " + firstName + " " + lastName;
    return View("Index");
}

As you can see they do almost the same trivial job of displaying a message with a minor difference. The Index() method sets "Welcome" message in the ViewBag whereas Index2() action method sets "Hello" message in the ViewBag. If you don't set formaction attribute on the submit button, the form is submitted to the Index() action method. However, if you set the formaction attribute, Index2() action method is called.

 

Turning the validation off

HTML5 provides various validation mechanisms in the form of input types, required attribute and pattern attribute. At times, however, you may want to skip the validation mechanisms. For example, let's say you have "Cancel" button or "Help" button that does a post back but since it doesn't have any impact on your data it is alright to bypass the validation. You can turn the validation off either at form level or at field level. At form level, novalidate attribute does the trick whereas at field level formnovalidate attribute does the job. The following markup shows how both of these attributes are used:

<form method="post" novalidate="novalidate">
<input id="Submit2" type="submit" value="Cancel" 
formaction="/home/index3" 
formnovalidate="formnovalidate" />

Turning the autocomplete off

Most of the browsers try to help users fill data entry forms with the help of autocomplete feature. At times, however, you may want to disable this feature for a form or a field. The autocomplete attribute of HTML5 allows you to do just that. The following markup shows how it is used at form level as well as field level:

<form method="post"  autocomplete="off">
<input id="firstName" type="text" ... autocomplete="off"/>

Notice how the autocomplete attribute is set to off to turn the autocomplete feature off. If you want to enable autocomplete for a specific field you can set autocomplete attribute to on. The following figures show firstName textbox with and without autocomplete.

Summary

HTML5 provides many enhancements to <form> element and <input> element. These enhancements help developers validate data entry forms with ease without writing any client side script. Currently, not all the browsers support all of these enhancements and developers may still require to use JavaScript as a fallback mechanism. However, as HTML5 matures and becomes widely accepted this need will reduce. These enhancements are certainly a welcome addition to new websites being developed using latest web technologies.

 


Bipin Joshi is the founder of BinaryIntellect Consulting and conducts professional training programs on ASP.NET in Thane. He is a published author and has authored or co-authored books for Apress and Wrox press. To know more about him click here. To know more about his training programs go here.

Get connected : Twitter  Facebook  Google+  LinkedIn

Associated Links
Download Source Code

Tags : ASP.NET Web Forms MVC HTML5
Posted On : 09 Dec 2011
Current Rating :
Rate this article :


This page is protected by copyright laws. Copying in any form is strictly prohibited. For Copyright notice and legal terms of use click here.

Protected by Copyscape