Release: Validation Plugin 1.11.0

A new version of the jQuery Validation Plugin is available. Once again this release brings more stability (bug fixes!), better localization (new: Malay) and improved html5 compability (min/max attributes on type=”date” now work with the min/max methods). More details on the code and feature changes in the changelog below.

Backwards compatibility is still going strong: The plugin should work with anything from jQuery 1.4.x to 1.9.x.

This is the first release to make it to the new jQuery Plugins site.

Download this release.

If you use the plugin, please donate or ask your boss to make a donation!

Click here to lend your support to: jQuery Validation Plugin and make a donation at !

The full changelog:

  • Remove clearing as numbers of `min`, `max` and `range` rules. Fixes #455. Closes gh-528.
  • Update pre-existing labels – fixes #430 closes gh-436
  • Fix $.validator.format to avoid group interpolation, where at least IE8/9 replaces -bash with the match. Fixes #614
  • Fix mimetype regex
  • Add plugin manifest and update headers to just MIT license, drop unnecessary dual-licensing (like jQuery).
  • Hebrew messages: Removed dots at end of sentences – Fixes gh-568
  • French translation for require_from_group validation. Fixes gh-573.
  • Allow groups to be an array or a string – Fixes #479
  • Removed spaces with multiple MIME types
  • Fix some date validations, JS syntax errors.
  • Remove support for metadata plugin, replace with data-rule- and data-msg- (added in 907467e8) properties.
  • Added sftp as a valid url-pattern
  • Add Malay (my) localization
  • Update localization/messages_hu.js
  • Remove focusin/focusout polyfill. Fixes #542 – Inclusion of jquery.validate interfers with focusin and focusout events in IE9
  • Localization: Fixed typo in finnish translation
  • Fix RTM demo to show invalid icon when going from valid back to invalid
  • Fixed premature return in remote function which prevented ajax call from being made in case an input was entered too quickly. Ensures remote validation always validates the newest value.
  • Undo fix for #244. Fixes #521 – E-mail validation fires immediately when text is in the field.
As usual:
  • Please post questions to the official Using jQuery Plugins Forum, tagging your question with (at least) “validate”. Keep your question short and succinct and provide code; a testpage makes it much more likely that you get an useful answer in no time.
  • Please post bug reports and other contributions (enhancements, features, eg. new validation methods) to the GitHub issue tracker


Cologne.js 2012

Cologne.js is this little user group that a few people founded in June 2010. Michael Bumann, offered to host the event at Cowoco, and has been regularly around since then. After half a year, we crowd-funded a projector and donated it to Cowoco, which meant that everything we needed was right on site. For quite some time, Matthias Luebken ran most of the time, recruiting speakers and advertising the events through Twitter and the mailing list. Its probably been a year now since Frederic Hemberger and myself took fully over. It has been challenging and frustrating at times, but especially our latest meetup in December was a very special success, and I wanted to write some more about that.

For the second time this year, we arranged a sponsored speaker to come to our event and speak there, with a local company paying the travel expenses (big thanks to Railslove and Denkwerk). We had Felix Geisendörfer come from Berlin to talk about NodeCopter. He told us how the idea came together, how it went from a singular event to a whole series with more planned for the summer next year. He live demoed his nodejs based library to program the drone, then went on to even write a custom firmware to execute directly on the drone itself. It was a lot of fun, mixed with learning about binary encodings to write a drone firmware.

As a kind of warm-up, Sebastian Golasch, by now a regular at our event, talked about what he dubbed Dirty Little Helper. Walking us through various hardware-browser setups, including his MakeyMakey based Simon-Says clone, he eventually presented his custom home automation setup. Remotely turn off lights and use your laptop camera to check on things, all DIY-style with cheap and simple components. I’m ordering a MakeyMakey!

The third talk, with which the evening started, was by Jan-Christoph Borchardt talking about Unhosted and Remote Storage. His colleague and founder of Unhosted told me about the ideas behind Unhosted last year at a beer.js event in Berlin, so it was quite interesting to me how far they came along. The remoteStorage specification, along with a reference implementation, can be used today to build applications where you control where your data is stored, instead of having to buy-in to editors attached to storage like Google Docs forces you to. Its unclear how much mainstream traction this will be able to achieve, but its an important idea worth spreading.

Those were the three talks that we advertised with. We ended up with a record number of visitors of 50! A lot of people also followed our beer.js invitation and stayed around after the talks, forcing Bumi to refill the beer fridge, since also a record number of drinks were consumed. Thanks to 5apps for sponsoring that.

I’m excited about next year. We’ve got one talk lined up for January already, but are, as usual, looking for more. If you want to present something, let us know (Twitter, email).

Release: Validation Plugin 1.10.0

Wow, 11 months. It really has been 11 months since the 1.9.0 release. Interesting freelance times!

Anyway, the jQuery validation plugin 1.10.0 is here! While the very recently launched campaign is just at the start, I hope this release helps convince you that the project isn’t dead. On the contrary, this release brings you all the improvements that were built during those 11 months. A big chunk was contributed by Max Lynch, kudos to him!

What changed? One cool new feature is the ability to specify messages with data- attributes. The next release should bring more html5y support like that, but for now you can put data-msg="Please please fill out this field!" into your markup, or specify one message per method: data-msg-required="Really need this" data-msg-minlength="Moar characters please" (please don’t use these messages in your application…).

Apart from that we’ve got a ton of updates on the outskirts: Localized messages now use their correct ISO codes, a lot of language files got added or improved. Additional methods got a few new citizens and updates to existing methods.

Backwards compatibility is still going strong: The plugin should work with anything from jQuery 1.3.x to 1.8.x.

Download this release.

Don’t forget to donate and spread the word!

Click here to lend your support to: jQuery Validation Plugin and make a donation at !

The full changelog:

  • Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback.
  • rename files for language_REGION according to the standard ISO_3166-1 (, for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW)
  • Optimise RegEx patterns, especially for UK phone numbers.
  • Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (
  • Added croatian (HR) localization
  • Existing French translations were edited and French translations for the additional methods were added.
  • Merged in changes for specifying custom error messages in data attributes
  • Updated UK Mobile phone number regex for new numbers. Fixes #154
  • Add element to success call with test. Fixes #60
  • Fixed regex for time additional method. Fixes #131
  • resetForm now clears old previousValue on form elements. Fixes #312
  • Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359
  • Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405
  • Added jQuery Mobile demo. Fixes #249
  • Deoptimize findByName for correctness. Fixes #82 – $.validator.prototype.findByName breaks in IE7
  • Added US zip code support and test. Fixes #90
  • Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244
  • Removed number stripping from stripHtml. Fixes #2
  • Fixed invalid count on invalid to valid remote validation. Fixes #286
  • Add link to file_input to demo index
  • Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369
  • Disables blur event when onfocusout is set to false. Test added.
  • Fixed value issue for radio buttons and checkboxes. Fixes #363
  • Added test for rangeWords and fixed regex and bounds in method. Fixes #308
  • Fixed TinyMCE Demo and added link on demo page. Fixes #382
  • Changed localization message for min/max. Fixes #273
  • Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217
  • Fixed delegate bug for dynamic-totals demo. Fixes #51
  • Fix incorrect message for alphanumeric validator
  • Removed incorrect false check on required attribute
  • required attribute fix for non-html5 browsers. Fixes #301
  • Added methods “require_from_group” and “skip_or_fill_minimum”
  • Use correct iso code for swedish
  • Updated demo HTML files to use HTML5 doctype
  • Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41
  • Introduce a elementValue method that normalizes only string values (don’t touch array value of multi-select). Fixes #116
  • Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9
  • Fix bad double quote in test fixtures
  • Fix maxWords method to include the upper bound, not exclude it. Fixes #284
  • Fixed grammar error in german range validator message. Fixes #315
  • Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280
  • Fix jQuery.format usage, should be $.validator.format. Fixes #329
  • Methods for ‘all’ UK phone numbers + UK postcodes
  • Pattern method: Convert string param to RegExp. Fixes issue #223
  • grammar error in german localization file
  • Added Estonian localization for messages
  • Improve tooltip handling on themerollered demo
  • Add type=”text” to input fields without type attribute to please qSA
  • Update themerollered demo to use tooltip to show errors as overlay.
  • Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load.
  • Fixed min error message broken in Japanese.
  • Update form plugin to latest version. Enhance the ajaxSubmit demo.
  • Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods
  • Passing submit event to submitHandler callback
  • Fixed #219 – Fix valid() on elements with dependency-callback or dependency-expression.
  • Improve build to remove dist dir to ensure only the current release gets zipped up
  • Bumping version to 2.0.0pre
As usual:
  • Please post questions to the official Using jQuery Plugins Forum, tagging your question with (at least) “validate”. Keep your question short and succinct and provide code; a testpage makes it much more likely that you get an useful answer in no time.
  • Please post bug reports and other contributions (enhancements, features, eg. new validation methods) to the GitHub issue tracker


Support the jQuery Validation Plugin

Validate forms like you’ve never been validating before!

Click here to lend your support to: jQuery Validation Plugin and make a donation at !

This has been the, a tad silly, tag line for the jQuery Validation Plugin for a few years now. Back in 2006, when Jörn Zaefferer started that plugin, he was still employed as a Java developer, contributing to jQuery mostly in his free time. Of the half-dozens plugins he started then, the Validation Plugin became the most succesful and is still quite popular today ( knows about more than 300.000 websites using the plugin).

Since late 2010, when Jörn went freelance to focus on just JavaScript projects (no more Java!), maintenance of the plugin didn’t go as well as planned. Early 2012, appendTo was generous to support the project, namely with Max Lynch work through dozens of pull requests and issues, landing a total of 28 commits. Since Max went on to create his own startup, the project went rather quiet again.

This is going to change! And you can be a part of that!

Jörn is looking for donations to spend quality time on the project. The roadmap below outlines a lot of work, probably a lot more than than can be covered by the 4000€ he’s currently asking for.

But that also depends on how much people will contribute in other ways. One part of this effort is to build a community around the plugin.

How can you help?

There’s a few things you can do:

  • You can directly donate to the campaign, any amount helps.
  • You ask your friends, coworkers, boss, spouse and whoever else, to help. If you’re part of a local JavaScript meetup, ask people there.
  • You can also help with the project itself: Look at the roadmap below and see if there’s something you can help with directly or indirectly. Know a good designer who could help with logo and website design? See if you can get them in touch with me. Know a technical writer who could help with website copy and documentation? Also very welcome!

The campaign also provides a detailed roadmap for what I’m planning to do with the plugin.

Spread the word

Help us get enough donations to get this project the attention it deserves. Share it on Twitter, Facebook, G+, Orkut, in your office, local newspaper, train station, airport, parliament! Call your senator!