Instead of writing a new function for each element, I used __call() to handle the creation of all form elements.
Created some type-specific html form elements.
Added Range element. Improved validation.
Updated readme and changed validate() method to isValid()