8

Ho i popup di JQuery e voglio inserire le convalide dei campi richieste e per questo ho impostato gli attributi richiesti nel modello e ho anche impostato il messaggio di convalida per loro nella vista ma che le convalide dei campi richieste non funzionano sui popup. La convalida dei campi obbligatori funziona bene su moduli diversi da JQuery Popup .... Per favore, guidami che cosa dovrei fare per affrontare questo problema ... Di seguito è riportato il mio codice.Validazioni dei campi obbligatori non funzionanti in JQuery Popup MVC 4

Modello

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

View

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

e che segue è il mio cod eto aprire un popup 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

Caricamento dinamico del modulo nel popup (ad esempio utilizzando ajax?) –

+1

@StephenMuecke si sto utilizzando ajax – ARC

+0

È necessario effettuare nuovamente l'analisi del validatore. Devi mostrare il tuo script per dare una risposta (modifica la domanda per includerla). –

risposta

13

Il validatore viene analizzato quando la pagina viene caricata inizialmente. Quando aggiungi contenuti dinamici, devi eseguire nuovamente l'analisi del validatore. Modificare lo script per includere le seguenti righe dopo che il contenuto è stato caricato

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

Nota a margine: il codice che avete mostrato non include @Html.ValidationMessageFor(m => m.MaterialCode) ma suppongo questo è incluso.

+0

Grazie mille Stephen Muecke .... ha risolto il mio problema – ARC