2012-05-02 2 views
-1

Я разрабатываю динамическую форму, в которой пользователь может нажать кнопку, а затем новый набор элементов управления будет добавлен в форму, используя плагин jQuery Template. Код ниже:Шаблон шаблона jQuery/ненавязчивая проверка

@using (Html.BeginForm("Index2", "Home", FormMethod.Post, new { id = "EditForm" })) 
{ 
@Html.ValidationSummary(false) 

@Html.LabelFor(m => m.Title) 
@Html.TextBoxFor(m => m.Title) 

<p> 
    <input type="button" name="Add Author", value="Add Author" /> 
</p> 

<div id="myElements"> 
@for (int i = 0; i < @Model.Authors.Count; i++) 
{ 
    <div class="myElement"> 
     @Html.LabelFor(m => m.Authors[i].Id) 
     @Html.TextBoxFor(m => m.Authors[i].Id) 
    </div> 
    <div class="myElement"> 
     @Html.LabelFor(m => m.Authors[i].Name) 
     @Html.TextBoxFor(m => m.Authors[i].Name) 
    </div> 
    <br style="clear:both;" /> 
} 
</div> 

<br /> 
<input type="submit" name="Submit" value="Submit" /> 
} 

<script id="AuthorTemplate" type="text/x-jquery-tmpl"> 
<div class="myElement"> 
    <input 
      data-val="true" 
      data-val-number="The field Author Id must be a number." 
      data-val-required="Author Id is required!" id="Authors_${value}__Id" 
      name="Authors[${value}].Id" 
      type="text" value="" class="valid" /> 
</div> 
<div class="myElement"> 
    <input 
      data-val="true" 
      data-val-required="Author Name is required!" 
      id="Authors_${value}__Name" 
      name="Authors[${value}].Name" 
      type="text" value="" /> 
</div> 
<br style="clear:both;" /> 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('input[name="Add Author"]').click(function (evt) { 
     evt.preventDefault(); 
     $('#AuthorTemplate').tmpl({ value: $('input[name^="Authors"]').length/2 }).appendTo('#myElements'); 

// Re-register unobtrusive validation 
    $.validator.unobtrusive.parse('#myElements'); 
    }); 
}); 
</script> 

Скрипт работает отлично, однако, форма не проверки вновь добавленной стоимости, хотя я повторно инициализирован ненавязчивую проверку.

Любые идеи?

Благодаря

+0

возможный дубликат [ASP.NET MVC 3 : Необходимые шаги для ненавязчивой проверки содержимого динамического/AJAX на стороне клиента] (http://stackoverflow.com/questions/8538082/asp-net-mvc-3-required-steps-for-unobtrusive-client-side-validation- of-dynamic) –

+0

На самом деле, я уже выполняю те же шаги! Все еще не работает! – Bill

ответ

0

На самом деле, правильный способ сделать это:

$.validator.unobtrusive.parse('#myElements'); 

Однако, выше недостаточно. Я должен был использовать следующий плагин, чтобы убедиться, что плагин JQuery Validation теперь известно о новых правил/сообщений:

http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/

Успехов,

0

Я думаю, что вам нужно изменить

$.validator.unobtrusive.parse('#myElements'); 

в

$.validator.unobtrusive.parse('.myElements'); 
+0

На самом деле его класс называется '.myElement'. – Sparky

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