8

Ho utilizzato il metodo descritto here per localizzare i miei messaggi di annotazione dei dati e fondamentalmente funziona bene in post normali. Posso vedere anche il messaggio di convalida localizzato sul lato client.jQuery convalida discreta ignora il messaggio di data-val-richiesto in MVC3

Tuttavia, il problema si verifica quando ho una vista parziale che ha i campi di input da convalidare e viene caricata utilizzando una chiamata Ajax. Per qualche motivo, ottengo il messaggio di convalida predefinito ("Questo campo è obbligatorio") anziché il mio messaggio localizzato impostato nell'attributo data-val-required dell'elemento.

Ho verificato quanto segue:
1. Ho incluso sia "jquery.validate.min.js" e "jquery.validate.unobtrusive.min.js".
2. Ho controllato la risposta ajax e contiene l'attributo data-val-required con messaggio localizzato.

Ho già provato le seguenti soluzioni:
1. Ho provato l'analisi della risposta Ajax (che non funzionava) come $ .validator.unobtrusive.parse ('forma')
2. Analisi contenuto dinamico per convalida come descritto here. Ancora nessuna soluzione.

Ho una scadenza pressante e questo mi preoccupa.

+0

Si sta tentando di convalidare subito dopo aver aggiunto il contenuto dalla parziale o è il contenuto dinamico presentato normalmente con il resto del modulo? –

+0

Il contenuto dinamico viene inviato normalmente con il resto del modulo. – sprisoner

+0

Finalmente ha avuto una svolta. C'erano due moduli nella mia pagina, uno nella pagina indice e uno nella pagina parziale. I pulsanti sui cui clic sarebbe stato inviato il modulo erano nella pagina indice. Ho spostato i pulsanti nella pagina parziale in modo che si trovino all'interno dell'elemento del modulo della pagina parziale, e lo! ha funzionato bene. Sebbene il problema sia risolto, non so che cosa abbia causato il problema e come sia stato risolto lo spostamento dei pulsanti nella forma più interna? Il mio problema è risolto, ma se qualcuno può aiutarmi a capire la causa, potrei contrassegnarlo come una risposta e chiudere questa domanda. – sprisoner

risposta

3

Penso che l'abbia già provato: stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements - la risposta di Steve Lamb mi ha aiutato di più.

In sostanza, è necessario ri-inizializzare il validatore ogni volta che si cambia il contenuto della pagina, come il codice di convalida crea un elenco per monitorare i controlli di cui ha bisogno per convalidare una sola volta, al caricamento della pagina ...

I Sembrava anche che dovesse aggiungere del codice extra da controllare e assicurarsi che gli input fossero nominati correttamente. Dammi un attimo e scriverò il codice. - hmm, mi dispiace, quel codice faceva parte di un'app client e non riesco a postarlo. Non troppo sicuro che avrebbe fatto la differenza in ogni caso ...

+0

Grazie Tieson, mi ero stancato. Tuttavia, l'ho risolto per errore. Leggi il mio commento sotto la domanda. Ancora confuso quale fosse il problema. – sprisoner

0

in caso qualcuno cadere in questa domanda, come gli stati di documentazione, è necessario che il campo ha un attributo name:

Mandated: È necessario un attributo "nome" per tutti gli elementi di input che richiedono la convalida e il plug-in non funzionerà senza questo. Un attributo 'nome' deve anche essere univoco per il modulo, in quanto questo è il modo in cui il plugin tiene traccia di tutti gli elementi di input. Tuttavia, ciascun gruppo di elementi della casella di controllo o della radio condividerà lo stesso "nome" poiché il valore di questo raggruppamento rappresenta un singolo pezzo dei dati del modulo.

Source

Problemi correlati