client-side html5 validation