est-il possible d'obtenir la validation de JQuery pour afficher le résumé de validation à l'aide de la validation désireuse?
J'utilise MVC 3 (si cela compte) et mes formulaires valident lorsque chaque élément perd la mise au point: P>
@using (Ajax.BeginForm(...)) { <div class="field-panel"> @Html.EditorFor(m => m.PatientID) ... </div> <input type="submit" class="carecon-button-next" value="Next" /> @Html.ValidationSummary(null, new { @class = "validation-summary" }) }
3 Réponses :
Ceci est depuis le page de démonstration ; Le Cependant, le Voici une démonstration brute montrant la validation à l'aide de InvalidHandler code> et le code pour créer un résumé d'erreur. Mais il est déclenché sur code> Soumettre code> qui n'est pas ce que vous avez demandé.
ErrorLabelContainer: code> méthode ne nécessite pas
formulaire code> soumission. selon la documentation , "Toutes les étiquettes d'erreur sont affichées dans une liste non ordonnée avec L'ID "MessageBox", comme spécifié par le sélecteur passé comme option ErrorContainer. Tous les éléments d'erreur sont emballés dans un élément LI, pour créer une liste de messages. " em> p>
Onfocusout code>. Il n'y a pas de bouton de soumission pour prouver ce point. Le
#messagsbox code> accumule tous les messages tels qu'ils sont collectés. P>
J'ai essayé de définir le paramètre ErrorLabelContainer code> à mon résumé div, mais en vain, il ne montre toujours que les erreurs dans le conteneur sur soumettre.
@Qwerty: Voir la démo j'ai ajouté à ma réponse. Il n'a même pas de bouton d'envoi.
Merci pour la démo !! Il a énormément contribué à déterminer que ce problème était vraiment avec MVC 3 ..
OK, je pense que je pensais cela.
Le problème est en réalité dû à l'utilisation de la validation non obstrissante avec MVC 3, puisque l'initialisation de la validation de JQuery pour vous. Ainsi, le seul moyen de configurer la validation consiste à utiliser ... ne fonctionne pas, car la validation de JQuery n'utilise que cette valeur Initialement init () Fonction, pour configurer un groupe d'autres paramètres tels que des conteneurs, etc. J'ai essayé d'émiter ce qu'il fait, ou même appeler J'ai donc adopté une approche différente. Premièrement, j'ai fourni une place pour MVC de mettre dans les chaînes d'erreur individuelles utilisant puis, dans le rappel code> code>, je copie ces chaînes dans le résumé de la validation form.data ("validator"). Paramètres code>. Cependant, essayer de définir le
ErrorLabelContainer code> via cette méthode, c'est-à-dire: p>
$ ("# formulaire"). Données ("validateur"). Initial ( ) code> à nouveau après avoir défini le
ErrorLabelContainer Code>, mais ce faisant ainsi causer un comportement étrange et une bande d'autres paramètres. P>
@ html.validationmessagefor () code> et d'ajout
affichage: Aucune code> Pour le garder caché: P >
défaut () CODE>: P>
$("#form").data("validator").settings.onfocusout = function (element) { $(element).valid(); };
$("#form").data("validator").settings.showErrors = function (errorMap, errorList) {
this.defaultShowErrors();
$("#error-summary").empty();
$(".field-validation-error span", $("#form"))
.clone()
.appendTo("#error-summary")
.wrap("<li>");
};
J'avais des problèmes similaires et j'ai écrit cela, cela semble être un moyen facile d'obtenir le comportement que vous recherchez:
function EnableEagerValidation(){ var itemsNeedingValidation = $('*[data-val="true"]'); itemsNeedingValidation.each(function () { $(this).blur(function(){$(this).closest("form").valid();}); }); }
Vous impliquez que vous avez déjà un «résumé de validation» ... Comment générez-vous cela? Il n'est pas montré nulle part dans votre code.
Ajouté le reste du code de page ..