Мы наконец-то выбрали другой хак. После того, как документ загружен, мы заменяем функцию тринидада для отправки формы нашей реализацией, которая вызывает событие после неудачной проверки, и эта ловушка затем перебирает все сообщения проверки, ища идентификатор ввода с ошибкой (и устанавливает его стиль). Некрасиво, но работает. Это иллюстрация этой идеи с использованием jQuery (просто набросок, не проверенный):
$(window).load(function () {
//save original function for form submit
var originalSubmit = window.submitForm;
//replace function for form submit with custom implementation that triggers some event in case of validation failure
window.submitForm = function (form, doValidate, parameters, isPartial) {
var retval = originalSubmit(form, doValidate, parameters, isPartial);
if (!retval) {
$(window).trigger('failedFormValidations', [form, doValidate, parameters, isPartial]);
}
}
//bind a listener for failed validations which performs the desired behavior
$(window).bind('failedFormValidations', function(event, form, doValidate, parameters, isPartial) {
// reset all inputs to nonhighlighted state, then loop through all labels and hightlight inputs with error
});
}