Moin,
ich bin voll und ganz bei dir. Man möchte einfach einen unnötigen Round-Trip vermeiden, der dann im Endeffekt nur dazu dient, dem Benutzer mitzuteilen, dass seine/ihre Eingabe so nicht stimmt.
Bei Datum-/Zeiteingaben verwende ich ein <input type="range" min="1" max="31"/> (Beispiel für Tag). Das wird dann clientseitig korrigiert, so dass der Benutzer gleich ein Feedback hat.