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.
![LightFace: Facebook Lightbox for MooTools]()
One of the web components I've always loved has been Facebook's modal dialog. This "lightbox" isn't like others: no dark overlay, no obnoxious animating to size, and it doesn't try to do "too much." With Facebook's dialog in mind, I've created LightFace: a Facebook lightbox...
![Responsive Images: The Ultimate Guide]()
Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...
![Scroll IFRAMEs on iOS]()
For the longest time, developers were frustrated by elements with overflow not being scrollable within the page of iOS Safari. For my blog it was particularly frustrating because I display my demos in sandboxed IFRAMEs on top of the article itself, so as to not affect my site's...
![Link Nudging with CSS3 Animations]()
One of the more popular and simple effects I've featured on this blog over the past year has been linking nudging. I've created this effect with three flavors of JavaScript: MooTools, jQuery, and even the Dojo Toolkit. Luckily CSS3 (almost) allows us to ditch...
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