這裏是我的問題,動態創建...元素沒有被驗證的W/AJAX後不顯眼的驗證和使用MVC 3和jQuery
我最初呈現和顯示用Ajax.BeginForm AJAX的形式創建了一個頁面。輸入一些標準併發布AJAX表單。返回的部分視圖包含使用Html.BeginForm創建的HTML表單。
到目前爲止這麼好...這一點的一切工作正常。我的不顯眼的客戶端驗證對從部分視圖創建的元素非常有效。當我現在嘗試創建一些動態輸入元素(通過jQuery)並將它們插入/追加到由局部視圖創建的表單中時,我的問題就會發生。我無法在我的動態創建的元素上進行任何不顯眼的客戶端驗證。
我嘗試過: - 克隆現有元素,修改它們的ID /名稱並將它們附加到DOM中。 - 創建html字符串並將它們插入到DOM中。
動態元素的每個插入我曾嘗試調用後: - $ .validator.unobtrusive.parseElement()[新元件] - $ .validator.unobtrusive.parse()[新的容器中,文檔等] - $ .validator.unobtrusive.parseDynamicContent()[插件]
這裏是jQuery代碼的詳細信息...
$("#insert").live("click", function() {
var html = "<input type='text' value='' name='CustomerNominationVolume' id='CustomerNominationVolume' data-val-required='The Nomination (Dth) field is required.' data-val-number='The field Nomination (Dth) must be a number.' data-val='true' /><br />"
html += "<span class='field-validation-valid' data-valmsg-replace='true' data-valmsg-for='CustomerNominationVolume'></span>";
$("#new").html(html);
});
$("#parse").live("click", function() {
$.validator.unobtrusive.parse(document);
});
$("#validate").live("click", function() {
var element = $("#CustomerNominationVolume");
var form = $(element).first().closest('form');
form.validate().element(element);
});
任何幫助,將不勝感激!
編輯: 做一些額外的研究和測試,我又回到了這個solution以確定爲什麼它不是爲我工作後。事實證明,我正在插入屬於列表一部分的新輸入元素。因此,我的新元素的名稱看起來與此類似:something [0] .id,something [1] .id等...
這些名稱導致$ .validator.unobtrusive.parseDynamicContent()函數在這一行失敗: $('[name ='+ elname +']')。rules(「add」,args);
我只是將其更改爲 $(「[name ='」+ elname +「'」「)。rules(」add「,args);
一切現在工作正常...
可能的重複[麻煩越來越不引人注意的驗證使用mvc 3在jquery ajax後](http://stackoverflow.com/questions/7005052/trouble-getting-unobtrusive-validation-working-with-mvc-3-on -jquery-ajax-post) – jgauffin 2011-08-13 09:13:21
另一種可能的重複:http://stackoverflow.com/questions/6812779/mvc-3-razor-load-partial-with-validation – jgauffin 2011-08-13 09:16:49