Question

J'écris un modèle d'éditeur pour entrer une date et une heure composées de trois champs.

  • Une zone de texte avec un jQuery UI DatePicker.
  • Une zone de texte pour saisir l'heure.
  • Une entrée cachée qui est mise à jour avec la chaîne de date et de heure complète via JavaScript.

L'idée est d'avoir des champs distincts pour la date et le temps affichées à l'utilisateur, alors qu'il n'y a qu'un seul champ lié au modèle. Chaque fois que les champs affichés sont modifiés, le champ caché est mis à jour via JavaScript.

@model System.DateTime?
<span class="datetime-editor">
<input class="datepicker" value="@(Model.HasValue ? 
  Model.Value.Date.ToString() : string.Empty)" readonly="readonly"/>
<input class="time" value="@(Model.HasValue ? 
  Model.Value.TimeOfDay.ToString() : string.Empty)"/>
@Html.HiddenFor(d => d)</span>

Le JavaScript pour configurer le DatePicker et copier les valeurs dans le champ caché.

$(".datepicker").datepicker();
$(".datetime-editor").find("input").change(function () {
    var date = $(this).parent().find(".datepicker").val();
    var time = parseTime($(this).parent().find(".time").val());
    if (date != "" && time != null) {
        $(this).siblings(".datetime-result").val(date + " " + time);
    }
    else {
        $(this).siblings(".datetime-result").val("");
    }
});

Mon problème est les attributs de validation. Ils sont tous présents dans la balise d'entrée cachée:

<input name="StartDateTime" id="StartDateTime" type="hidden" 
  data-val-required="Start date and time are required" data-val="true" value=""/>

J'aimerais attraper en quelque sorte le généré data-val* Attributs et ajoutez-les à la place aux entrées visibles. À travers ViewData.ModelMetaData Je peux savoir si le champ est requis ou non, mais je devrais ensuite réinventer la logique pour créer le data-val-required attribut. Je voudrais obtenir les attributs générés à la place.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top