2012-06-15 2 views
0

Я пытаюсь с помощью jquery.validate.unotrusive.js плагин для динамически создаваемых полей формы, как:Jquery стороне клиента VALIDATE не работает

var message = $("<textarea id='test'></textarea>"); 
$(message).attr("data-val", "true") 
.attr("data-val-number", "The field CustomerId must be a number.") 
.attr("data-val-required", "The CustomerId field is required."); 

var span = $('<span class="field-validation-valid" data-valmsg-replace="true"></span>'); 
$(span).attr("data-valmsg-for", $(message).attr("id")); 

var form = $("<form action='url'></form>"); 

$(form).append(message,span); 

Я встраивать Оба jquery.validate & jquery.validate.unobtrusive JS файлы, но поле textarea не проверяется при отправке формы. Кто-нибудь может сказать, что здесь происходит не так?

ответ

3

Когда вы добавляете новые элементы в DOM динамически, вам нужно будет пересмотреть ненавязчивые правила проверки, чтобы их зарегистрировать. Поэтому, как только вы приложили форму к DOM вызвать метод $.validator.unobtrusive.parse информировать рамки проверки клиента этих изменений:

... 
$(form).append(message, span); 
$.validator.unobtrusive.parse(form); 

И если вы только динамически добавлять элементы ввода в уже существующую форму в DOM, для которых проверка на стороне клиента был зарегистрирован вам также необходимо удалить предыдущие правила для этой формы:

// adding some form elements to an existing form ... 

$(form).removeData('validator').removeData('unobtrusiveValidation'); 
$.validator.unobtrusive.parse(form); 
+0

спасибо за ответ, это работает отлично –

+0

есть одна проблема, сообщение об ошибке не отображается только красная кайма показать ошибку –

+0

Извините, я не могу воспроизвести проблему говорят. Вот живая демонстрация, с которой вы можете играть: http://jsfiddle.net/uqngb/1/ –

Смежные вопросы