No utilicé el datepicker de jquery.ui porque necesitaba seleccionar una semana entera y varias fechas bajo diferentes condiciones, entonces estoy usando Keith Wood's datepicker en una EditorTemplate para mis campos de fecha:Validación no intrusiva para Datepicker en línea no funciona, funciona bien para Datepicker no en línea
@model Nullable<DateTime>
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
@Html.TextBox("", dt, new { @class = "datefield", @type = "date", @id = id })
<script type="text/javascript">
$(document).ready(function() {
$('#@id').datepick({
renderer: $.datepick.themeRollerRenderer,
multiSelect: 999
});
});
</script>
Validación funciona bien cuando se utiliza un cuadro de texto y tener el selector de fechas "pop-up"; pero lo que realmente quiero es utilizar un selector de fechas en línea, pero no puede obtener la validación de trabajar en estas condiciones:
@model Nullable<DateTime>
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
<div class="kwdp">
</div>
@Html.Hidden("", dt, new { @class = "datefield", @id = id })
<script type="text/javascript">
$(document).ready(function() {
$('.kwdp').datepick({
renderer: $.datepick.themeRollerRenderer,
multiSelect: 999
});
});
</script>
Aquí está un recorte-it de mi encargo la validación del lado del cliente:
form.validate({
rules:{
StartDate: {
required: true,
dpDate: true
}
},
messages: {
StartDate: 'Please enter a valid date (dd-mm-yyyy)'
}
});
Y aquí es la definición del campo DateTime en mi clase de datos:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public Nullable<DateTime> StartDate { get; set; }
entiendo que debo añadir una onSelect para el selector de fecha para poblar el campo oculto con fecha (s), pero sin tener en cuenta , Debería obtener un error cuando el valor del campo oculto está vacío, pero no es válido. El marcado HTML es interpretado como el siguiente:
<input name="StartDate" class="datefield" id="StartDate" type="hidden" data-val-required="The StartDate field is required." data-val="true" data-val-date="The field StartDate must be a date." value=""/>
estoy usando las siguientes bibliotecas:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/datepick/jquery.datepick.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/datepick/jquery.datepick.ext.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/datepick/jquery.datepick.validation.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.datepicker.validation.min.js")" type="text/javascript"></script>
He encontrado a similar un-answered question que se ve el desarrollador está teniendo el mismo problema, pero ninguna solución publicados. ¿Alguna idea de dónde estoy yendo mal?
¡Eso lo hizo!Funciona tanto para Html.Hidden (...) como para Html.TextBox (... style = "display: none"). Nota: tuve que cargarlo desde el principio en el ciclo de vida de la página, no pude simplemente establecer los valores predeterminados() en una función llamada al completar dinámicamente un formulario con elementos. Gracias por la ayuda. R/Brandon – m4chine
Sí, tiene razón; la anulación de la configuración predeterminada no parece tener efecto si la coloca en una función anónima autoejecutable. – danludwig