with validator validate starts plugin custom bootstrap addmethod jquery validation

validate - jquery validator addmethod message



jquery validator addmethod mensaje personalizado (4)

Aquí está la solución ... necesaria para llamar a la función showErrors del objeto:

jQuery.validator.addMethod("duplicate", function(value, element, params) { var validator = this; params.data[element.name] = value; $.post(params.url, params.data, function(response) { if (response == ''true''){ return true; } else { var errors = {}; errors[element.name] = response; validator.showErrors(errors); return false; } }, ''text''); }, '''');

Tomado de "remoto" en jquery.validate.js (líneas 917 - 919)

He creado un método para el complemento de validación de jquery, que funciona como la regla remota. La diferencia es que me gustaría mostrar un mensaje de error dinámico (basado en la respuesta ajax).

jQuery.validator.addMethod("duplicate", function(value, element, params) { var object_settings = this.settings; params.data[$(element).attr("name")] = value; $.post(params.url, params.data, function(response) { if (response == ''true''){ return true; } else { object_settings.messages[element.name] = response; return false; } }, ''text''); }, '''');

Funciona ... en cierto modo ... establece el mensaje, pero no lo muestra inicialmente (si valida el campo por segunda vez, se mostrará el mensaje).

¿Alguna sugerencia?

(Tal vez la regla remota ofrece esta funcionalidad ... No pude encontrar nada en la documentación)


Estaba buscando una solución a esto también, y encontré esto ...

En el ejemplo original, si cambia esta línea:

object_settings.messages[element.name] = response;

A esto:

$.validator.messages.duplicate = response;

Esto funciona para mi Lo encontré aquí: http://blogs.teamb.com/craigstuntz/2009/01/15/37923/


He seguido el proceso mencionado en el sitio http://blogs.teamb.com/craigstuntz/2009/01/15/37923/#comment-125774 y he tenido éxito.

Debe llamar al método con el mensaje dinámico para que se muestre ese mensaje. Por ejemplo

$.validator.addMethod("validatePremium", function(value, element, param) { if( Condition ) { $.validator.messages.validatePremium = "your message here"; //enter code here //... return false; } }, $.validator.messages.validatePremium);


esto me funcionó

var errorMsg = '''', $valid = false; $.validator.addMethod("methodName",function(val, elem){ $.ajax({ url:''your_script.php'', type:"POST", dataType:"json", data : {}, success:function(response){ if(response.success == false){ errorMsg = response.msg; $valid = response.success; } else{ $valid = true; } } }); $.validator.messages["methodName"] = errorMsg; return $valid; },'''');

asegúrese de reemplazar " methodName " con su nombre de método en este caso "duplicate" en ambos lugares (addMethod function 1st arg y en el cuerpo de la función addMethod $ .validator.messages ["methodName"])