MVC champ caché en cours de validation
J'ai un peu de champs sur ma page, qui apparaissent pour disparaître et selon le menu déroulant des sélections de vous rendre sur la page.
Ainsi, par exemple, j'ai
<section>
@Html.LabelFor(model => model.AuctionTypeId)
<div> @Html.DropDownList("AuctionTypeId", Model.AuctionTypes, @AuctionControllerResource.SelectAuctionType, new { id="auctionType", required = "required" })
@Html.ValidationMessageFor(model => model.AuctionTypeId) </div>
</section>
<section>
@Html.LabelFor(model => model.AutomaticExtensionType, new { hidden = "true", id = "automaticExtensionTypeLabel" })
<div> @Html.DropDownList("AutomaticExtensionType", Model.AutomaticExtensions, @AuctionControllerResource.SelectAutomaticExtensionType, new { hidden="hidden", required = "required", id = "automaticExtensionTypeList" })
@Html.ValidationMessageFor(model => model.AutomaticExtensionType) </div>
</section>
Le JQuery, le code que j'ai pour ce qui est
$('#auctionType').change(function () {
var selectedAuctionType = $("#auctionType").val();
var englishAuctionType = $("#englishAuctionTypeId").val();
if (selectedAuctionType == englishAuctionType) {
$("#automaticExtensionTypeList").show();
$("#automaticExtensionTypeLabel").show();
} else {
$("#automaticExtensionTypeList").hide();
$("#automaticExtensionTypeLabel").hide();
}
});
Maintenant, l'affichage et le masquage de travailler comme ils le devraient. Le problème est que quand je soumettre le formulaire et le champ automaticExtensionTypeList
est caché, le formulaire n'a pas soumettre parce que automaticExtensionTypeList
est un champ obligatoire. La question est de savoir comment puis-je savoir MVC seulement de valider visible champs?
J'ai eu un coup d'oeil par le biais de certains de JQuery nous l'avons écrit dans ce projet et nous avons cette ligne
$.validator.setDefaults({ ignore: [] });
Apparemment, cela permet caché de validation. Ma question est de savoir quelle ligne de code n'est le contraire?
OriginalL'auteur Sachin Kainth | 2013-03-09
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
ou pour personnalise
C'est la chose - je ne veux pas le remplacer car en fait il est dans une bibliothèque externe (KendoUI) et peut être utilisé ailleurs. Ce que je veux faire pour ma page en particulier le remplacer.
Ce n'est pas le travail
L'endroit où je fais $("#automaticExtensionTypeList").show();, ne pourrais-je pas également d'ajouter ou de supprimer l'attribut requis à cet endroit?
Yep, j'ai utilisé les deux.
OriginalL'auteur Dave Alperovich
La raison pour cela est que les champs cachés ne sont pas conçus pour une utilisation lorsqu'un champ ne s'applique pas - ils sont conçus pour une utilisation lorsqu'un champ ne appliquer, mais ne nécessite pas l'entrée de l'utilisateur. Dans votre situation, vous pouvez:
applicables.
Required
.Personnellement, j'irais pour le dernier comme ça va être le plus rapide à mettre en œuvre et n'ont pas de pièges évidents - vous pouvez vous procurer cette valeur par défaut dans votre contrôleur et puis de le manipuler en tant que de besoin.
Veuillez prendre un coup d'oeil à mon montage.
OriginalL'auteur Ant P
C'est un problème commun.
Hiddens ne va pas arrêter de validation.
J'ai toujours gérer ce par la création de multiples formes avec chevauchement des propriétés.
exemple:
Je voudrais utiliser 2 divs avec des Formes distinctes. De cette façon, lorsque je afficher/masquer, soit je ne finira pas avec satanés caché [obligatoire]'s que l'arrêt de mon formulaire de soumission
Pourriez-vous démontrer qu'avec un peu de code?
est-ce à le démontrer?
Pas très élégant, mais il devrait fonctionner
OriginalL'auteur Renaissance