8

У меня есть всплывающие окна JQuery, и я хочу поместить на него необходимые проверки полей, и для этого я установил требуемые атрибуты в модели и также установил для них валидационное сообщение в представлении, но что обязательные проверки полей не работают над всплывающими окнами. Обязательная проверка поля отлично работает в формах, отличных от всплывающих окон JQuery .... Пожалуйста, расскажите мне, что я должен сделать, чтобы решить эту проблему ... Ниже приводится мой код.Обязательные проверки полей, не работающие в JQuery Popup MVC 4

Модель

[Display(Name = "Material Code")] 
[Required(ErrorMessage = "*")] 
public string MaterialCode { get; set; } 

Посмотреть

<li> 
    @Html.LabelFor(m => m.MaterialCode) 
    @Html.TextBoxFor(m => m.MaterialCode) 
    @Html.HiddenFor(m => m.MaterialCodeId) 
</li> 

и после мой треска ЕТО открыть всплывающее окно JQuery.

$('#btnAddCharge').on('click', function (event) { 
     event.preventDefault(); 
     var actionURL = '@Url.Action("Edit", "Charges", new { Id = 0, @ticketId = @TicketId, UserId = UserId })'; 

     $(dialogBox).dialog({ 
      autoOpen: false, 
      resizable: false, 
      title: 'Edit', 
      modal: true, 
      show: "blind", 
      width: 'auto', 
      hide: "blind", 
      open: function (event, ui) { 
       $(this).load(actionURL, function (html) { 
        $('form', html).submit(function() { 
         $.ajax({ 
          url: this.action, 
          type: this.method, 
          data: $(this).serialize(), 
          success: function (res) { 
           if (res.success) { 
            $(dialogBox).dialog('close'); 
           } 
          } 
         }); 
         return false; 
        }); 
       }); 
      } 
     }); 

     $(dialogBox).dialog('open'); 
    }); 
+0

Вы динамически загружаете форму во всплывающем окне (например, используя ajax?) –

+1

@StephenMuecke Да, я использую ajax – ARC

+0

Вам нужно повторно обработать валидатор. Вам нужно показать свой скрипт, чтобы дать ответ (отредактируйте вопрос, чтобы включить его). –

ответ

13

Валидатор анализируется, когда страница изначально загружена. Когда вы добавляете динамический контент, вам нужно повторно обработать валидатор. Измените сценарий, чтобы включить в него следующие строки после того, как содержимое загружается

$(this).load(actionURL, function (html) { 
    // Reparse the validator 
    var form = $('form'); 
    form.data('validator', null); 
    $.validator.unobtrusive.parse(form); 
    $('form', html).submit(function() { 
     .... 

Side Примечание: Код, который вы показали не включает @Html.ValidationMessageFor(m => m.MaterialCode), но я предполагаю, что это включено.

+0

Спасибо, что так много Стивен Муекке .... он решил мою проблему – ARC

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