This is WICK, the Web Input Completion Kit, an evolving framework that leverages web standards such as JavaScript, DOM and CSS to facilitate textual input in form UI elements assisted by local and remote data sources. This framework strives to remain unobtrusive and preserve a form's semantics and accessibility.

Download Here | See in Action

Request Features Here | Submit Bugs Here | Request Support Here | Discuss Here

SourceForge.net Logo Support This Project


It started as a contest. Since then, I've been getting weekly e-mails from developers interested in licensing this code. I spent most nights for a couple of months after the contest ended refactoring and enhancing it. A lot of sweat went into it.


Basic integration within existing web-standards-based applications should be extremely easy.

This code was originally developed to facilitate e-mail "autocomplete" functionality in web-based e-mail forms, such as the one you'll see in GMail. As of this writing, I would describe this framework's autocompletion implementation as "at least as good as GMail's, not quite as pretty as Google Suggest's but ought to be extended to get there, far better than Yahoo's, pretty darn cross-browser compatible, mostly standards-compliant". Most importantly, it has plenty of room for improvement and derivatives, which is part of my motivation for releasing it to the Open-Source Community under a BSD-style License. Which means you pretty-much can do whatever you want with it as long as you keep the copyright in place.

One key requirement I strive to meet is to allow an HTML document to load and be usable right-away while the library may take an extra few seconds to load without getting in the way of the user experience. Even if the script hasn't loaded, an HTML form is to remain usable and accessible as it previously was. When the script is finally done loading, and the "collection" array populated, event handlers get registered, at which point an end-user starts seeing suggestions for what they're in the middle of typing, if and only if the input field they're typing in, has a class attribute with a special value.


Current code components: