2013-08-21 18 views
0

我有一個帶有ASP MVC3的表單,並且input字段通過jQuery validate插件v1.8(使用MVC3的默認jQuery驗證)進行驗證。這是完美的工作,但問題是當我插入一個新的字段來驗證使用afterappend函數。插入後跟或附加字段的驗證

如果我有這樣的HTML:

<label for="name">Name: </label> 
<input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value=""> 
<span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span> 

它工作正常,但如果我用afterinsert功能插入它,它不工作:

$(window).load(function() { 
    $('#addName').click(function (event) { 
     event.preventDefault(); 
     var $newdiv = $('<label for="name">Name: </label><input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value=""><span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span>'); 

     $('.names').append($newdiv); 
    }); 
}); 
+0

什麼是「不起作用」?但是,如果您動態添加表單字段,則可以使用['rules('add')'方法](http://jqueryvalidation.org/rules)來應用規則。 – Sparky

+0

不工作意味着新字段未經驗證。關於規則(添加),它不工作,因爲MVC使用不顯眼的客戶端驗證。我在這裏找到了解決方案:http://stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements – Alberto

+0

「不顯眼」驗證總是更痛苦,而不是值得。另外,請在下面發佈您的實際解決方案,而不僅僅是一個鏈接。這是幫助未來讀者的最佳方式。 – Sparky

回答

0

驗證規則建立在DOM負載上可用的元素上。因此,您需要使用以下代碼來告訴jQuery驗證在驗證中包含另一個字段:

$('#addName').click(function (event) { 
    event.preventDefault(); 
    var $newdiv = $('<label for="name">Name: </label><input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value=""><span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span>'); 
    $("#name").rules("add", "required"); // let validate know about the new field. 

    $('.names').append($newdiv); 
}); 
+0

這並沒有工作,但我解決了這個職位:http://stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements儘管我不得不解析整個表單容器而不是元素:$ .validator.unobtrusive.parseDynamicContent('form')而不是$ .validator.unobtrusive.parseDynamicContent('#name') – Alberto

相關問題