generic form validation - no plugin