Client-side form validation