2012-06-15 148 views
0

我試圖用jquery.validate.unotrusive.js插件動態創建像表單字段:jQuery的客戶端驗證工作不

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/ –