File Input accept Attribute
The HTML5 revolution provided us several simple but important attributes like download, autofocus, required, novalidate, and placeholder. There's another one you may want to know about: accept. The accept attribute is useful for input[type=file] elements. Let's have a look at it!
The HTML
I'll use Twitter's upload button to illustrate a good usage of the accept attribute:
<input type="file" name="media_empty" accept="image/gif,image/jpeg,image/jpg,image/png,">
The accept attribute gets a comma-separated list of mime types for files desired file types. In this case, Twitter is allowing the user to upload common image formats.
![Page Visibility API]()
One event that's always been lacking within the document is a signal for when the user is looking at a given tab, or another tab. When does the user switch off our site to look at something else? When do they come back?
![Write Better JavaScript with Promises]()
You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes them so special. Can't you just use a callback? What's the big deal? In this article, we'll...
![CSS Kwicks]()
One of the effects that made me excited about client side and JavaScript was the Kwicks effect. Take a list of items and react to them accordingly when hovered. Simple, sweet. The effect was originally created with JavaScript but come five years later, our...
![Create Tiny URLs with TinyURL, MooTools, and PHP]()
Since we've already figured out how to create TinyURL URLs remotely using PHP, we may as well create a small AJAX-enabled tiny URL creator. Using MooTools to do so is almost too easy.
The XHTML (Form)
We need an input box where the user will enter...
The biggest problem about using this code is that the user can change it easily with firebug or others debugs.
It’s not for validation, it’s for assisting the user to select the right file type (since the file selection will only show files of that type).
You should never use this for validation since some browsers do not support it.
Validation should be done on your backend. This kind of selection only helps users what we really need from them.
Be careful with this.
The main issue is that some mobile browsers started to prevent the user from selecting any (!) file at all if the accept property was declared (which is just plain terrible user agent behaviour).
Thus if you want to support these browsers, you have to detect them and remove the accept property.
For details see http://caniuse.com/#feat=input-file-accept