L'ajout de jQuery programme de validation des règles de créer dynamiquement des éléments ASP
J'ai quelques insérés dynamiquement des champs de formulaire sur une page dans une MVC3 projet. Normalement, nous aurions ajouter jQuery validation côté serveur, mais dans ce cas, nous ne pouvons pas (plusieurs champs dans l'INTERFACE utilisateur de générer de la valeur pour un champ caché - et c'est ce qui est présenté. Nous ne pouvons pas valider à l'encontre d'un champ caché, de sorte que nous devons, au contraire, ajouter de l'INTERFACE utilisateur, seule la validation pour les champs que l'utilisateur peut voir)
Une fois que les champs sont ajoutés dynamiquement à la page, j'exécute le code suivant sur le conteneur:
$container.find(".date").rules("add", {
required: true,
messages: {
required: "The date is required"
}
});
Mais il ne fonctionne pas! Curieusement, en désactivant le code ci-dessus, la création de la dynamique des éléments, puis en exécutant le code dans le navigateur JS console fonctionne, mais uniquement la valeur par défaut message de validation de la montre.
Je suis à une perte. Des idées?
Je suis à l'aide de jQuery Validation 1.9.0 & la discrète plugin
Vous devez vous connecter pour publier un commentaire.
Maintenant que je comprends ce qui se passe avec la Discrète plugin côté des choses (ce que je comprends est liée à ASP.NET d'une certaine manière), voici ce que vous devez faire:
Après l'ajout de votre nouvel élément, appel
$.validator.unobtrusive.parseElement(newElement)
et il sera ajouté à la forme. En tant que votre réponse proposée, vous devez définir les données-val et des données-val-attributs requis dans la nouvelle forme de l'élément.Donc vous retrouver avec ceci:
Montré ici: http://jsfiddle.net/ryleyb/LNjtd/2/
Comme il s'avère, ce qui peut être fait principalement en HTML en ajoutant un peu d'attributs pour chaque élément de formulaire:
name
attributdata-val="true"
data-val-required="message"
Comme suit:
Alors la forme a juste besoin d'être ré-analysée via JS:
$.validator.unobtrusive.parse($("form"));
?parse
fonction s'attend à un sélecteur CSS chaîne de caractères passée en là, mais il y a aussi pas mal en passant dans un objet jQuery soit. Ce n'est pas pas nécessaire.Je pense que vous avez eu quelque chose de plus simple mal - comme votre
find('.date')
n'a pas fait de trouver quoi que ce soit. Parce que sinon, ton code semble tout à fait raisonnable pour moi. Voici un exemple de ce qu'il fonctionne comme prévu: http://jsfiddle.net/ryleyb/LNjtd/J'ai été en mesure de valider le code correctement avec cette: