Я некоторое время возился с этим, отбрасывал решения и пытался позже (когда у меня было свободное время, верьте или нет).
Я не уверен, изменилось бы это поведениев более новых версиях jquery (мы используем 1.7.2), так как этот поток был создан или прокомментирован последним, но я обнаружил, что .parseElement(inputElement)
работает нормально, когда я пытаюсь добавить динамически созданные элементы в форму, в которой уже загружен валидатор.Это уже было предложено @jamesfm (15 февраля '11) в одном из комментариев выше, но я пропустил это в первые несколько раз, когда работал над этим.Поэтому я добавляю его как отдельный ответ, чтобы сделать его более очевидным, и потому что я думаю, что это хорошее решение и не требует больших накладных расходов.Это может не относиться ко всем вопросам, поднятым в последующих ответах, но я думаю, что это будет решением исходного вопроса.Вот как я получил мою работу:
//row & textarea created dynamically by an async ajax call further up in the code
var row = ...; //row reference from somewhere
var textarea = row.find("textarea");
textarea.val("[someValue]");
//add max length rule to the text area
textarea.rules('add', {
maxlength: 2000
});
//parse the element to enable the validation on the dynamically added element
$.validator.unobtrusive.parseElement(textarea);