Así que aquí está mi solución (similar a la respuesta de John Vance):
Primero vaya aquí y obtenga una función para detectar navegadores móviles.
http://detectmobilebrowsers.com/
Tienen muchas formas diferentes de detectar si estás en un dispositivo móvil, así que encuentra una que funcione con lo que estás usando.
Su página HTML (pseudocódigo):
If Mobile Then
<input id="selling-date" type="date" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
else
<input id="selling-date" type="text" class="date-picker" readonly="readonly" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
JQuery:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max
});
});
De esta manera, aún puede usar selectores de fecha nativos en dispositivos móviles y al mismo tiempo configurar las fechas mínimas y máximas de cualquier manera.
El campo para dispositivos no móviles debe ser de solo lectura porque si un navegador móvil como Chrome para ios "solicita una versión de escritorio", entonces pueden sortear la verificación del dispositivo móvil y aún desea evitar que aparezca el teclado.
Sin embargo, si el campo es de solo lectura, al usuario le podría parecer que no puede cambiar el campo. Puede solucionar esto cambiando el CSS para que parezca que no es de solo lectura (es decir, cambie el color del borde a negro) pero a menos que esté cambiando el CSS para todas las etiquetas de entrada, le resultará difícil mantener la apariencia coherente en navegadores.
Para solucionarlo, simplemente agrego un botón de imagen de calendario al selector de fecha. Simplemente cambie su código JQuery un poco:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max,
showOn: "both",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText: "Select date"
});
});
Nota: deberá encontrar una imagen adecuada.