New input types
Video: New input typesA quick glance at the form section of the HTML5 specification is all that you'll need to see that there are some significant upgrades to form elements. This is only natural as HTML5 focuses in large part on building applications and forms are a big part of almost any application you might build. In this chapter, I want to focus on some of the changes to the forms specification and show you what you can do with them in your own web sites and applications. We'll start by focusing on a form element that adds some very powerful new attributes, the input field.
Viewers: in countries Watching now:
In HTML5 First Look, author James Williamson introduces the newest HTML specification, providing a high-level overview of HTML5 in its current state, how it differs from HTML 4, the current level of support in various browsers and mobile devices, and how the specification might evolve in the future. Exercise files accompany the course.
- Understanding the history of HTML5
- Using new tags
- Understanding HTML5 semantics
- Coding ID and class attributes in HTML5
- Structuring documents
- Building forms
- Exploring HTML5 native APIs
- Encoding and adding HTML5 video
- Exploring associated technologies such as CSS3
New input types
A quick glance at the form section of the HTML5 specification is all that you'll need to see that there are some significant upgrades to form elements. This is only natural as HTML5 focuses in large part on building applications and forms are a big part of almost any application you might build. In this chapter, I want to focus on some of the changes to the forms specification and show you what you can do with them in your own web sites and applications. We'll start by focusing on a form element that adds some very powerful new attributes, the input field.
The input field is the most common form element used in building HTML forms. The multiple types of input fields make it easy to add text fields, radio buttons, checkboxes, and submit buttons to our forms. HTML5 adds a few new input field types that are going to make it a lot easier to build more responsive and more robust forms. Let's take a look. So here I've got the trails.htm from the 05_01 folder opened up. If I scroll down through the code, I can see that towards the bottom of this, where we used to have the Rider Review, we now have a form going on down here.
This is the form that lets people submit their own reviews. So not much else has changed. Notice that instead of an article now, it is now a section. We still have a header. We still have the hgroup up here, but the reason it changed from an article to a section is because the content really isn't standalone content anymore. This is not something that you're probably going to republish in another location. Okay, so if you look at the form, it's a pretty basic, very, very simple form. We've got a couple of text inputs, one for Trail name, one for Name, one for Email, one for the rider's web site, if they want to promote that.
Then we have a text area down here where they can submit the actual review. Now, there's going to be more to this form eventually. We're going to add some additional elements to it, but for right now, I want to focus on these input types. So our trailName is a text input and that sort of makes sense. Our name, first name last name, is a text input. That kind of makes sense. Having something to write their email in, that's a text input. That kind of makes sense. But in HTML5, we have new input types for our form elements. Let's take a look at a couple of those options. So I'm going to find the input for email.
So it's got a name of email and an ID of email. I'm going to go ahead and highlight the text value and I'm just going to type in email. You got it. It's that simple. So what that does is it converts the input type from just a normal text field to one that is expecting the input of an email address. Now, there are a couple of different things that are going to happen as a result of this. Most browsers and devices would just go ahead and treat this as a normal text field. So if they don't support the email type, no harm, no foul. They'll just treat it like a normal text type. However, if they do support the email text type, it's going to make form validation easier.
In the case of several devices, it's actually going to change the options for user input. Now, let's do the same thing down here for our web site. Again, its type is text, but I'm going to go ahead and highlight that and I'm going to show you something about the code hinting here too. It's going to allow me to go over some of these. I'm just going to open up a quotation mark, so I can see some of the types that are available to us now. Most of these you've probably noticed before, but things like date, datetime, that's new. There is email, we just used that. If I scroll down a little bit, I can see file. There's month, number, so some of these we're going to get into in just a little bit.
Here's telephone, time, and this is the one we're looking for, URL. You can also see week. That's a new one as well. So there's a lot of new ones in here in HTML5. I'm going to say URL and again what this is going to do for us is it's going to change the type of information that this text input field is expecting. It's going to be expecting a full URL. So again, different browser agents can choose how they react to that. It might change how the forms get auto filled. It might change how the interface's input options are laid out and it could certainly help with form validation and we're going to see that in just a little bit.
So I'm going to go ahead and save this file and I'm going to preview this page. I'm going to go ahead and open up this page in Opera. Okay, so here's our page opened in Opera. I'm going to scroll down to see our form. You can see right off the bat, there's something a little different going on here. The email form has a dotted line all the way around it. You may or may not see that. The reason that I see this is because I have my preferences in Opera set to auto fill out certain forms and one of the things that I have set in my Autofill Preferences is my Email address.
So it automatically sort of highlights this and says, "Look, if you choose to auto fill out this form, this is one of the fields that will be filled in." Now if I just tab through my form here, I don't really notice anything different. What's really odd about this is in previous versions of Opera, if I clicked an Email, I would literally have a link to my email contacts here and if I clicked in Website, I would have a link to all the bookmarks within the Opera browser. If you're using an older version of Opera, you might actually be seeing that, instead of what we're seeing here which is just the appearance of a normal form element. Now on the other hand, if we view this on a device and I'm just going to switch over here to an iPhone.
I'm going to pull up the same form. You'll notice here if I click inside one of the top two form elements, a keyboard comes up and allows me to type in my response. Now nothing new there. But if I go down and click inside the Email, notice the change in the keyboard that comes up. We now have the @ symbol, okay. So now if I scroll down and click inside the Website form element, there you go. You can see that the keyboard that comes up for that now has the .com. So the iPhone is sensitive to these different types of form elements. They're going to give the user a different way to interact with those form elements based on the type.
So, with some very minor changes to our code, we've added an additional functionality to our forms. Now currently, only some mobile devices like the iPhone and only certain browsers like Opera support any additional functionality for these form elements, but changing the type causes no issues in older browsers, which treat them just like normal text inputs and for that reason, I really don't see any reason not to start using these form elements right away.
There are currently no FAQs about HTML5 First Look.