Le champ doit être une date - DatePicker la validation échoue dans Chrome - mvc
J'ai un problème étrange. Ma date de validation ne fonctionne pas sous Chrome. J'ai essayé cette réponse, mais il ne fonctionne pas pour moi.
J'ai ceci dans mon modèle:
[Display(Name = "Date")]
[DataType(DataType.Date)]
public DateTime Date { get; set; }
Mon Point De Vue:
<div class="editor-field">
@Html.TextBoxFor(model => model.Item.Date, new { @class = "picker" })
@Html.ValidationMessageFor(model => model.Item.Date)
</div>
$(document).ready(function () {
$('.picker').datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true,
selectOtherMonths: true
});
});
Tout fonctionne à l'Opéra et Firefox, mais Chrome n'aime pas ce type de date. Je reçois constamment l'erreur suivante The field 'Date' must be a date
.
Des idées?
Mise à JOUR
Il semble y avoir un problème lorsque le code est à l'intérieur d'une vue partielle. Quand je copie le code d'une page principale, la validation fonctionne très bien.
Je suis insertion partielle de la vue à l'intérieur de mon écran principal tout simplement comme ceci:
@Html.Partial("_CreateOrEdit", Model)
Et que le code ci-dessus est à l'intérieur d'une vue partielle:
@model Pro.Web.Models.Model
<div class="editor-field">
@Html.TextBoxFor(model => model.Item.Date, new { @class = "picker" })
@Html.ValidationMessageFor(model => model.Item.Date)
$(document).ready(function () {
$('.picker').datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true,
selectOtherMonths: true
});
</script>
});
UPDATE2
Il ne fonctionne pas après tout. Parfois cela fonctionne, parfois pas. J'ai cliqué sur un couple de fois sur les dates, et parfois de validation de passe. Pour la même date, il pourrait y avoir de bons et de mauvais validation.
C'est la sortie html pour la date de terrain:
<div class="editor-field">
<input class="picker" data-val="true" data-val-date="The field Date must be a date." data-val-required="The Date field is required." id="date" name="Item.Date" type="text" value="1.1.0001. 0:00:00" />
<span class="field-validation-valid" data-valmsg-for="Item.Date" data-valmsg-replace="true"></span>
</div>
- Possible dup: stackoverflow.com/questions/5966244/jquery-datepicker-chrome
- C'est la même réponse que celle que j'ai mis dans mon premier paragraphe. J'ai essayé, mais c'était toujours le même.
- Désolé dup / dup.
Vous devez vous connecter pour publier un commentaire.
Exactement la même situation ici (vue partielle)
Je l'ai résolu en supprimant l'attribut validation et effectuer la validation à côté serveur:
À mon avis les problèmes, c'est que MVC est la génération de la date d'entrée HTML5 avec
[type=date]
. Cela provoque que dans chrome valide format de la date en est de même de même que dans le système de format de date.Vous pouvez mettre un format de date dans la MVC être commun avec JqueryUI à l'aide d'attributs suivants:
La deuxième idée est d'utiliser le code de l'article: La création d'un Natif HTML 5 Datepicker avec un Repli de jQuery UI
Une chose de plus. Il y a un bon sujet à ce sujet date d'entrée html: Est-il possible de modifier input type="date" format?
@Html.Partial("_CreateOrEdit", Model)
. Avez-vous le saviez peut-être ce que pourrait être une raison qu'il ne fonctionne pas quand il est à l'intérieur d'une vue partielle?Je l'ai résolu en supprimant l'attribut validation
Il est un peu tard pour le crash de la partie après une année, mais j'ai essayé toutes les solutions que j'ai pu trouver concernant cette erreur, et aucun d'entre eux ont aidé. Donc, pour toute personne en difficulté, comme moi, voici ce que résolu ce problème.
Ajouter à la fin de jquery.validate.globalize.js et sa version compacte(dépend de ce que vous utilisez), ce petit bout de code.
Globalize.culture("en-GB");
Bien sûr, utiliser vos propres paramètres de culture à l'intérieur des guillemets.
Espère que cela aide!
Le problème semble être avec
<input type="date" />
(HTML5) comme spécification dit que la valeur correcte est définie comme RFC3339.J'ai donc changé mon point de Vue à quelque chose comme ceci:
Espère que cela aide.
J'ai eu le même message d'erreur. Résolu par l'application d'datetime comme le type,
de même que l'utilisation du temps pour seulement temps