validate submithandler language errorelement jquery validation

submithandler - Cómo agregar una regla No igual a en jQuery.validation



jquery validation rules (8)

Me preguntaba cómo hacerlo para poder hacer una regla donde un campo no es igual a un valor. Como si tuviera un campo llamado ''nombre'', así que no quiero ''nombre'' = ''Tu nombre''.

¿Alguien tiene una idea de cómo hacer esto? Gracias por cualquier ayuda.


Gracias por la respuesta de @Nick Craver ♦, pero en mi entorno de trabajo, debe modificarse ligeramente antes de que funcione.

$.validator.addMethod("notEqualTo", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, ''This two elements are the same, please change it.'');



La respuesta de Nick encaja perfectamente. Necesitaba comparar dos campos en el formulario y asegurarme de que no fueran iguales. Lo modifiqué solo un poco.

jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, "This has to be different..."); $("#cform").validate( { rules: { referringsales: { required: false, notEqual: "#salesperson" } } });

Editado para responder el comentario:

Si tiene más de un conjunto de listas desplegables para comparar, el método también funciona con ese caso.

jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, "This has to be different..."); $("#cform").validate( { rules: { referringsales: { required: false, notEqual: "#salesperson" } DropDown2: { required: false, notEqual: "#SecondBase" } } });

Si la pregunta es sobre comparar las ventas de referencia con 2 bases diferentes (por ejemplo, #initialContact y #salesperson), simplemente agregue esa regla a la lista.

referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }


Muchas gracias, Nick! Un poco de suma: si tiene unos pocos campos para validar en la función validate (), la sintaxis debería ser:

self.logo.rules( ''add'', { notEqual: "Select the Logo" } );


No estoy seguro si recibiste tu respuesta pero:

return this.optional (elemento) || valor! = param;

no funcionará si el valor es variable.

Necesita leer:

return this.optional (elemento) || valor! = $ (param) .val () ;

Aclamaciones


Propongo una función multivaluada ...

jQuery.validator.addMethod("notEqualTo", function(value, element, param) { var notEqual = true; value = $.trim(value); for (i = 0; i < param.length; i++) { if (value == $.trim($(param[i]).val())) { notEqual = false; } } return this.optional(element) || notEqual; }, "Please enter a diferent value." );

Y yo lo llamo ...

$("#abm-form").validate({ debug: true, rules: { password1: { required: true, minlength: 10, notEqualTo: [''#lastname'', ''#firstname'', ''#email''] }, password2: { equalTo: ''#password1'' } } });

Esto funciona para mi!


Puede usar un método personalizado, algo como esto:

jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != param; }, "Please specify a different (non-default) value");

Entonces úsalo así:

$("form").validate({ rules: { nameField: { notEqual: "Your Name" } } });

Si lo agrega como una regla como esta lo hace más extensible, por lo que puede usarlo para compararlo con el valor predeterminado en otros campos.


Si tiene un solo valor en el que desea que no sea como su pregunta lo implica, puede verificarlo fácilmente sin ningún complemento externo.

$(''#yourForm'').submit(function(e) { if ( $(''input[name="yourField"]'').val()==''Your Name'' ) e.preventDefault(); alert("Your message here"); } });