Que la validación de formularios HTML5 no funcione como esperas es un problema común. Aquí tienes una lista de las razones más frecuentes y cómo solucionarlas:
novalidate en la etiqueta <form>:novalidate, la validación nativa del navegador se desactiva por completo para ese formulario.novalidate de la etiqueta <form> si quieres que el navegador realice la validación.formnovalidate en el botón de envío:formnovalidate del botón si quieres que ese envío active la validación.<input>):required: ¿Está presente en los campos que deben ser obligatorios?input correcto: ¿Estás usando el type adecuado? Por ejemplo, type="email" para correos, type="url" para URLs, type="number" para números. Un <input type="text"> no validará un formato de email por sí solo.pattern: Si usas el atributo pattern para una expresión regular, asegúrate de que la expresión sea correcta y coincida con el formato que esperas.min, max, step: Para tipos numéricos o de fecha, verifica que estos valores sean correctos.minlength, maxlength: Para campos de texto, asegúrate de que las longitudes son las deseadas.event.preventDefault() en el evento submit: Si tienes un script que maneja el envío del formulario, podría estar llamando a event.preventDefault() incondicionalmente, lo que detendría el proceso de validación nativo antes de que pueda mostrar mensajes, o enviando los datos por AJAX sin permitir que el navegador valide.Pasos para depurar:
novalidate y formnovalidate como primer paso.Importante: Recuerda que la validación HTML5 es una validación del lado del cliente. Es una ayuda para la experiencia del usuario, pero siempre debes implementar una validación robusta en el lado del servidor, ya que la validación del cliente puede ser eludida.