More than two years later, and the error still does not seem to be fixed, so here is what I found:
The problem is the remote
function:
remote: function(value, element, param) { if ( this.optional(element) ) return "dependency-mismatch"; var previous = this.previousValue(element); if (!this.settings.messages[element.name] ) this.settings.messages[element.name] = {}; previous.originalMessage = this.settings.messages[element.name].remote; this.settings.messages[element.name].remote = previous.message;
The problem is that in the 2nd and subsequent evaluations of this function, messages[element.name].remote
contains a specific (text) error message, and the actual original message is lost forever when the previous.originalMessage
overwritten after that.
I managed to solve the problem by adding a check before this line:
if (!previous.originalMessage) previous.originalMessage = this.settings.messages[element.name].remote;
Iβm not sure if this is really the right solution, but it works - validation errors now re-apply the format function with every validation failure.
source share