2010-05-05 13 views
7

Quiero utilizar el selector de fechas Jquery. Lo tengo configurado usando una opción de campo alt. Estoy mostrando D/M/Y en el campo de texto, pero enviando Y-M-D. Todo funciona bien hasta el momento, enviando los datos correctos, etc.jQuery Selector de fecha en el que la entrada de texto es de solo lectura

Sin embargo, quiero evitar que el usuario escriba manualmente una fecha. Originalmente había configurado el campo ENTRADA a deshabilitado, que funcionaba en todos los navegadores, excepto en IE. En IE aparecería el selector de fecha pero luego no se cerraría después de hacer clic en una fecha.

¿Alguien sabe la mejor manera de hacerlo?

Respuesta

8

Para evitar que el usuario editar manualmente la entrada, me gustaría adjuntar un evento de pulsación de tecla y volver falsa/evitar un impago de su manejador. De esta forma, si tiene javascript, puede usar el marcador de fecha, y si no puede editar manualmente la entrada. respuesta

$("#input-id").keypress(function (e) 
{ 
    e.preventDefault(); 
}); 
+0

Gracias. Esta es una solución muy concisa y maneja la falta de Javascript con gracia también. –

+2

si va por esa ruta, también puede ser útil desactivar la tecla de acceso, para evitar el retroceso, eliminar, etc. $ ("# input-id"). Keydown (función (e) \t {e .preventDefault();}); – dah97765

+0

Encontré que la pulsación de tecla no podía evitar el retroceso, por lo que la solución dah97765 es la mejor. –

0

Después de deshabilitar el campo de entrada, use el método de destrucción para eliminar el marcador de fecha. Cuando vuelva a habilitar el campo, simplemente vuelva a crear el marcador de fecha nuevamente.

$("#target").datepicker("destroy"); 
3

La extensión de nc3b:

$("#input-id").keydown(function (e) 
{e.preventDefault();}); 

será evitar que las teclas como la tecla de retroceso, suprimir, etc. De lo contrario, usted podría tener una fecha como 11/11/2012, y un usuario podría retroceder a 11/11/201 y técnicamente, esa sigue siendo una fecha válida según JS.

+1

Gracias. Esto es mejor que la respuesta correcta. +1 – Jignesh

+0

La pulsación de teclas también evita copiar y pegar también. al menos funciona para mí. – Jignesh

1

También puede hacer esto:

<input type="text" id="datepicker" name="datepicker" readonly="readonly" /> 

Ver el atributo readonly anteriormente.

Si también desea que el calendario para visualizar cuando el <input> tiene el foco, añadir lo siguiente:

$("#datepicker").datepicker({ showOn: 'both' }); 
Cuestiones relacionadas