2012-02-21 37 views
0

在客戶端創建一些輸入,例如:ASP MVC 3 JavaScript驗證新元素

var title = document.createElement('input'); 
title.setAttribute('type', 'text'); 
title.setAttribute('name', 'Title'); 
myForm.appendChild(title); 

該領域應符合規定。我怎樣才能做這個驗證?

回答

1

我怎樣才能做到這一點的驗證?

您應該應用HTML5 data-*屬性,它是由jQuery的不顯眼的驗證使用,然後調用jQuery.validator.unobtrusive.parse迫使插件重新分析已動態添加的規則:

var title = document.createElement('input'); 
title.setAttribute('type', 'text'); 
title.setAttribute('id', 'Title'); 
title.setAttribute('name', 'Title'); 
title.setAttribute('data-val', 'true'); 
title.setAttribute('data-val-required', 'This field is required'); 
myForm.appendChild(title); 

$(myForm).removeData("validator"); 
$(myForm).removeData("unobtrusiveValidation"); 
$.validator.unobtrusive.parse(myForm); 

還要注意的可能要提供將除非你正在使用的Html.ValidationSummary幫手集中在一個位置的所有錯誤信息被用來顯示錯誤消息的相應<span>元素。這個元素應該是這樣的:

<span class="field-validation-valid" data-valmsg-for="Title" data-valmsg-replace="true"></span> 

這可以寫在一個更jQueryish方式:

$(function() { 
    $.validator.unobtrusive.parse(
     $('form').append(
      $('<input/>', { 
       type: 'text', 
       id: 'Title', 
       name: 'Title' 
      }) 
      .attr('data-val', 'true') 
      .attr('data-val-required', 'This field is required') 
     ) 
     .append(
      $('<span/>') 
       .addClass('field-validation-valid') 
       .attr('data-valmsg-for', 'Title') 
       .attr('data-valmsg-replace', 'true') 
     ) 
     .removeData('validator') 
     .removeData('unobtrusiveValidation') 
    ); 
}); 
+0

謝謝你,達林! – faagira 2012-02-21 18:47:22

+0

當我這樣做,我總是得到,指出「無法讀取屬性未定義‘不顯眼’」驗證的工作原理否則會出現錯誤,但我似乎就是不能夠清除舊的有效性,然後重建它一旦我我添加了新的領域。有什麼想法嗎? – 2013-06-28 19:10:25