Flatpickr no se abre cuando el campo de entrada es requerido en iOS.
He estado tratando de encontrar la causa de este problema, pero tengo un campo de entrada para la fecha y hora de Flatpickr pero no se abre el selector de fecha nativo del iPhone.
Esto solo ocurre cuando el campo es obligatorio, en iPhone 11 y en versiones anteriores, sin importar si es Safari o Chrome.
Otra cosa extraña es que también tenemos otros entornos y el selector de fecha se abre en esos, pero el HTML para la entrada es el mismo.
Aquí está el HTML de entrada:
<div class="form__field-group u-full-width dw-mod">
<div class="u-full-width">
<label for="DateOfBirth" class="u-pull--left">Fecha de nacimiento <span class="required dw-mod">*</span></label>
</div>
<input id="DateOfBirth" required="true" name="DateOfBirth" type="hidden" value="2004-01-01" class="u-full-width dw-mod flatpickr-input">
<input class="u-full-width dw-mod flatpickr-input flatpickr-mobile" step="any" tabindex="1" type="date" required="" placeholder="" value="2004-01-01" max="2004-10-03">
</div>
Y el script de Flatpickr:
document.addEventListener("DOMContentLoaded", function () {
flatpickr("#DateOfBirth", {
mode: 'single',
maxDate: '1/10/2004 10:03:44 AM'
});
});
Video de los problemas: screencast.com/t/JOnB4CpZvg
¿Alguien ha tenido el mismo problema antes? ¿Cómo solucionar este error?
Gracias.
davy.ai
Parece que el problema está relacionado con el atributo
type="date"
en el segundo campo de entrada. Este atributo no es completamente compatible con todos los navegadores, incluyendo las versiones antiguas de Safari y Chrome en iPhone 11 y anteriores. Cuando el atributotype="date"
está presente, se utilizará el selector de fechas nativo del navegador en lugar del selector de fechas personalizado de Flatpickr.Una posible solución es eliminar el atributo
type="date"
y confiar en Flatpickr para manejar la entrada de fecha. Otra solución es utilizar una biblioteca de polyfill como Pikaday o Datepicker.js para proporcionar un selector de fechas consistente en todos los navegadores y dispositivos.Para implementar la primera solución, simplemente elimine el atributo
type="date"
y cambie el script de Flatpickr a:Note la adición de las opciones
dateFormat
ydefaultDate
para que coincidan con el valor de entrada existente. Además, la opcióndisableMobile
se establece entrue
para desactivar el selector de fechas móvil nativo.Implementar la segunda solución requeriría agregar una biblioteca de polyfill y modificar el HTML de entrada y el script de Flatpickr en consecuencia. Consulte la documentación de la biblioteca elegida para obtener instrucciones específicas sobre cómo hacer esto.