validate formulario form javascript jquery html form-submit requiredfieldvalidator

javascript - formulario - required html



Omitir el atributo HTML "requerido" al enviar (4)

Esta pregunta ya tiene una respuesta aquí:

Yo uso el required de un primer cheque antes de enviar un formulario.

<form action="myform.php"> Foo: <input type="text" name="someField" required="required"> <input type="submit" value="submit"> <input type="submit" value="ignore"> </form>

El problema es que tengo un botón "ignorar", que también envía el formulario y la lógica de fondo establece un estado correcto en una base de datos. En este caso (ignorar) no se desea la validación (porque no es necesario rellenar el campo "Foo").

¿Cuál es la mejor manera de manejar los 2 escenarios?

  1. Soy consciente de que podría abandonar "requerido" y hacer la validación en otro lugar (backend / JavaScript). Estoy buscando una manera de mantener el "requerido".
  2. Podría usar algunos Js onclick para el escenario del botón ignorar y eliminar el atributo justo antes de enviar el formulario ( https://stackoverflow.com/a/13951500/356726 ).

Pero en realidad estoy buscando algo más inteligente ....

--- Editar ---

Sí, duplicado del atributo Requerido HTML5


Debería usar el enfoque # 1 por los siguientes motivos: La razón principal para usar la validación required lugar de la validación de JavaScript es que es más simple y funciona incluso cuando JavaScript está desactivado. Aquí la simplicidad no se aplica, ya que el uso de lo required dificulta las cosas. Y la última razón tampoco se aplica: con JavaScript deshabilitado y el navegador es compatible, el botón "ignorar" no funciona a menos que se ingresen algunos datos en el campo de texto.

Otra alternativa es la mencionada en la respuesta de @KattKenefick. Incluso podría resultar en una estructura y lógica más simples. Si la forma es realmente tan simple como en el ejemplo, es sencillo dividirla en dos formas:

<form action="myform.php"> Foo: <input type="text" name="someField" required="required"> <input type="submit" value="submit"> </form> <form action="myform.php"> <input type="submit" value="ignore"> </form>


No JavaScript, no se necesita una segunda forma, y ​​la validación puede permanecer:

Exactamente para este caso de uso, la especificación HTML5 ha diseñado el atributo formnovalidate para enviar elementos (como <input type=submit> ), como uno de los atributos para el envío de formularios :

El atributo formnovalidate se puede usar para hacer que los botones de envío no activen la validación de la restricción.

Así que simplemente pon

<form action="myform.php"> Foo: <input type="text" name="someField" required> <input type="submit" value="submit"> <input type="submit" value="ignore" formnovalidate> </form>


Si no desea utilizar Javascript, puede hacerlos formularios separados y tener todas las entradas configuradas como ocultas para el formulario de ignore .

No es la mejor opción, pero es una alternativa.


Su # 2 es un enfoque común. Algo como:

$(''input[value="ignore"]'').click(function() { $(this).siblings(''input[type="text"]'').removeAttr(''required''); });

Puede que tenga que usar la tecla del ratón para vencer a enviar.