validate validar true tag nuevos novalidate needs formulario form enviar bootstrap atributos atributo antes 3school jquery jquery-validate

jquery - validar - tag form html5



¿Por qué jQuery Validation agrega el atributo noValidate? (1)

El atributo novalidate simplemente le dice al navegador que deshabilite la validación HTML5 incorporada o ignore los atributos de validación HTML5 que haya usado.

El complemento jQuery Validate agrega dinámicamente el atributo novalidate porque, al instalarlo, has decidido dejar que el complemento maneje la validación en lugar de HTML5.

Ninguno de estos dos métodos, JavaScript (jQuery) o HTML5, son suficientes para proteger su base de datos. Siempre debe tener algún tipo de validación del lado del servidor en el lugar cuando la validación del lado del cliente falla, se deshabilita o se omite por el usuario / navegador.

Cita OP:

"Mi formulario se representa con el atributo noValidate y, por lo tanto, puedo insertar valores nulos / vacíos en la base de datos".

Parece que algo está muy mal con la forma en que está usando el complemento jQuery Validate, y el atributo novalidate no es la causa raíz.

Si es crítico que no pueda ingresar datos null , necesitará un código de validación de datos en el servidor para evitar esto. Nunca debe confiar en el código del lado del cliente para proteger la base de datos, ya que todo el código del lado del cliente se puede omitir fácilmente.

"¿Cuál es el razonamiento de esto?"

Como se explicó anteriormente. Esto es normal y deseado. El complemento simplemente usa novalidate para hacerse cargo de la validación del lado del cliente desde el navegador (HTML5).

Si no tiene atributos de validación HTML5, entonces el atributo novalidate , o la falta del atributo novalidate , no hace absolutamente nada. En otras palabras, solo cambia la validación de HTML5 si utiliza los atributos de validación de HTML5 .

"¿El formulario tiene que ser configurado de una manera particular?"

Sí. Pero no podemos ver su marca para decirle dónde se equivocó.

"Mi trabajo sucio está usando: .removeAttr(''novalidate'') "

Esto no es inteligente, o completamente superfluo, dependiendo de su marca. Efectivamente, potencialmente está permitiendo que la validación de HTML5 ocurra simultáneamente con el complemento jQuery Validate. Elija uno u otro para la validación del lado del cliente.

EDITAR :

Desde entonces, el OP ha agregado un marcado HTML a la pregunta.

El complemento jQuery Validate funciona exactamente como se esperaba: jsfiddle.net/tv7Bz

Actualmente estoy usando:

<script src="//code.jquery.com/jquery-1.10.2.min.js"></script> <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <script src="../js/bootStrap/js/bootstrap.min.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.min.js"></script>

con validación tal como:

j$(''.delValidate'').each(function(){ j$(this).validate({ rules:{ delivery_Method:{ required: true } }, message:{ delivery_Method:{ required: true } } }); }); j$(''.validateUser'').each(function(){ j$(this).validate({ rules:{ f_Name:{ required: true }, l_Name:{ required: true }, username:{ required: true, minlength: 6 }, password: { validChars: true, noSpace: true, minlength: 6, skip_or_fill_minimum: [3,".pw"] }, confPass: { equalTo: "#password", skip_or_fill_minimum: [3,".pw"] } } }); });

Fragmento de HTML:

<form class="form-horizontal delValidate" action="#" method="post"> <input type="hidden" name="formIdentifier" value="addDel" /> <div class="form-group"> <div class="col-sm-3"> <input type="text" name="delivery_Method" class="form-control" placeholder="Enter new method" /> </div> <div class="col-sm-2 col-sm-offset-2"> <button type="submit" class="btn btn-default btn-block">Add</button> </div> </div> </form>

Pero cuando voy a mi página, Mi formulario se representa con el atributo noValidate y, por lo tanto, puedo insertar valores nulos / vacíos en la base de datos. ¿Cuál es el razonamiento de esto? ¿El formulario tiene que ser configurado de una manera particular? ¿La validación de jQuery reconoce que algo está mal y, por lo tanto, no funciona? Mi trabajo sucio alrededor está usando:

j$(this).removeAttr(''novalidate'');