Как выделить поле ввода с ошибкой проверки с помощью Тринидада (JSF)? - PullRequest
0 голосов
/ 12 июля 2010

После неудачной проверки формы на стороне клиента Тринидад показывает сообщения об ошибках и выделяет метки неудачных входов.Мне нужно выделить поля ввода сами.Можно ли это как-то сделать?Самое отчаянное решение, которое я могу придумать, - это присоединить слушатель события js к событию DOMAttrModified на ярлыках, но это действительно ужасный хак.

1 Ответ

0 голосов
/ 11 августа 2010

Мы наконец-то выбрали другой хак. После того, как документ загружен, мы заменяем функцию тринидада для отправки формы нашей реализацией, которая вызывает событие после неудачной проверки, и эта ловушка затем перебирает все сообщения проверки, ища идентификатор ввода с ошибкой (и устанавливает его стиль). Некрасиво, но работает. Это иллюстрация этой идеи с использованием 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
});
}
...