MVC3: faire case requis via jQuery valider?

Je veux que mon "Accepter les Conditions" case à cocher pour être obligatoires à l'aide de jQuery valider, dans un MVC3 projet. Je suis actuellement serveur/client SEC/SPOT de validation à partir de "données MS attributs d'annotation" + "MS MVC3 discrète jQuery de validation".

Voici un test stand-alone (plaine du code HTML généré par MVC3). Pourquoi ne pas travailler, s'il vous plaît? Lorsque vous exécutez, la validation assure le "Contact" Nom de champ est rempli, mais ne se soucie pas de l'état de la case à cocher.

<!DOCTYPE html>
<html>
<head>
<title>RequiredCheckbox</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.js"></script>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" language="javascript">
$(function () {
//http://itmeze.com/2010/12/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3/
$.validator.unobtrusive.adapters.add("mandatory", function (options) {
options.rules["required"] = true;
if (options.message) {
options.messages["required"] = options.message;
}
}
});
$.validator.unobtrusive.parse(document);
});
</script>
</head>
<body>
<div>
<form>
<input data-val="true" data-val-mandatory="The field Terms Are Accepted is invalid." id="isTermsAccepted" name="isTermsAccepted" type="checkbox" value="true" />
<input name="isTermsAccepted" type="hidden" value="false" />
<span class="field-validation-valid" data-valmsg-for="isTermsAccepted" data-valmsg-replace="true"></span>
<input data-val="true" data-val-required="The Contact Name field is required." id="contactName" name="contactName" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="contactName" data-valmsg-replace="true"></span>
<button type="submit">Submit</button>
</form>
</div>
</body>
</html>

Le reste de ce post est juste mes notes de recherche.

Réglage de l'annotation de données de l'attribut [obligatoire] n'aide pas:

http://forums.89.biz/forums/MVC+3+Unobtrusive+validation+does+not+work+with+checkboxes+(jquery+validation)+and+the+fix+for+it.

C'est très bien. Ce "obligatoire" pour une case à cocher est évidemment une guerre sainte, je ne veux pas wade, où MME de la pensée qu'ils connaissaient mieux que les jquery équipe. Le fait de contraindre localement devrait être une simple question de:

$("form").validate({ rules: { cbAgreeToTerms: "required" } });

...droit? non, parce que:

http://blog.waynebrantley.com/2011/01/mvc3-breaks-any-manual-use-of-jquery.html

http://pinoytech.org/question/4824071/microsofts-jquery-validate-unobtrusive-makes-other-validators-skip-validation

QUOI? C'est assez puant cheezy! (À mon humble avis, bien sûr.)

Maintenant, j'ai essayé cette solution:

http://itmeze.com/2010/12/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3/

et il n'a pas de travail pour moi. De cet auteur, balançant des commentaires et un peu de fret-culte de l'utilisation de l'inversion de la CASE test de plus tôt dans son article, je me demande si cela fonctionne réellement pour lui, alors que d'autres le vaudou était impliqué?

Remarque, je pense que le dernier extrait de JS est l'équivalent de l'aspirateur:

$.validator.unobtrusive.adapters.addBool("brequired", "required");
Qui a été suggéré par le dernier post:

http://forums.asp.net/p/1648319/4281140.aspx#4281140

Mais de l'avis que les commentaires de l'auteur qu'il n'avait pas réglé encore. Il n'a pas de travail pour moi, et lire entre les lignes, je pense qu'il veut dire, il n'a pas de travail pour lui?

L'unobtrusive.js les appels d'analyser sur docready, donc j'ai essayé d'appeler, mais il ne m'a pas aidé.

$.validator.unobtrusive.parse(document);
J'ai également trouvé quelques articles similaires, et aucun ne de parler au sujet de l'obligation d'initialisation de toute sorte. Peut-être qu'ils sont tous localement édition de l'original/public unobtrusive.js? Je préfère pas si je peux l'aider, n'est-ce pas ce que les cartes sont pour?

J'ai trouvé pile de dépassement d'articles, beaucoup de le même, ainsi que des exemples plus complexes:

ASP .Net MVC 3 discrète client personnalisé de validation

Effectuer la validation côté client pour l'attribut personnalisé

http://xhalent.wordpress.com/2011/01/27/custom-unobstrusive-jquery-validation-in-asp-net-mvc-3/

Mais je ne vois rien là qui est différent de ce que j'ai déjà essayé.

Est-ce vraiment pour les gens? Pourquoi je ne peux pas le faire fonctionner pour moi?

  • Après avoir vu toutes les réponses, pourquoi ne pouvez-vous pas simplement utiliser un Equals(vrai) attribut?
InformationsquelleAutor shannon | 2011-02-08