Foros del Web » Programando para Internet » Jquery »

[Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Estas en el tema de [Aporte] Datepicker jquery interactuar con el nombre del campo en el valor en el foro de Jquery en Foros del Web. Si lo sé he caido bajo, espero me perdonen Aqui les expongo algo que me costó un poco de trabajo por varias cosas que se ...
  #1 (permalink)  
Antiguo 13/09/2012, 21:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
[Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Si lo sé he caido bajo, espero me perdonen

Aqui les expongo algo que me costó un poco de trabajo por varias cosas que se den lograr, hay una que todavía no logro resolver pero cuando lo tenga lo expongo.

La idea de este código es lograr dejar un valor por defecto en los campos cuando el usuario no esté interactuando con el campo. Una vez que usuario esté interactuando entonces modificamos los valores a lo que el usuario ha deseado

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.     <meta charset="utf-8">
  4.     <title>Demo Datepicker</title>
  5.     <link rel="stylesheet" href="css/jquery.ui.all.css">
  6.     <style>
  7.     input{
  8.         color: #999999;
  9.     }
  10.     .writing{
  11.         color: #000000;
  12.     }
  13.     </style>
  14.     <script src="js/jquery-1.8.0.min.js"></script>
  15.     <script src="js/jquery.ui.core.js"></script>
  16.     <script src="js/jquery.ui.widget.js"></script>
  17.     <script src="js/jquery.ui.datepicker.js"></script>
  18.     <script>
  19.     $(function(){
  20.         /**
  21.          * Escribirá en formato YYYY-MM-DD (esto lo hago por el uso y formato en que se escriben las fechas en la base de datos)
  22.          * Esto es a gusto los valores que escribí, solo es cuestión de leer la documentación y modificar los valores correspondientes
  23.          */
  24.         var dates = $( "#from, #to" ).datepicker({
  25.             dateFormat: "yy-mm-dd",
  26.             defaultDate: 0,
  27.             minDate: 0,
  28.             changeMonth: true,
  29.             changeYear: true,
  30.             numberOfMonths: 1,
  31.             showButtonPanel: true,
  32.             onSelect: function( selectedDate ) {
  33.                 var option = this.id == "from" ? "minDate" : "maxDate",
  34.                     instance = $( this ).data( "datepicker" ),
  35.                     date = $.datepicker.parseDate(
  36.                         instance.settings.dateFormat ||
  37.                         $.datepicker._defaults.dateFormat,
  38.                         selectedDate, instance.settings );
  39.                 dates.not( this ).datepicker( "option", option, date );
  40.  
  41.                 /**
  42.                  * Importante para que se ejecute la función change()
  43.                  * no se puede usar $( this ) porque no modifica el que debe, se debe indicar cual exactamente por eso
  44.                  * $( "#from, #to" )...
  45.                  */
  46.                 $( "#from, #to" ).change();
  47.             }
  48.         }).focus(function(){
  49.             /**
  50.              * El id y el valor deben tener los mismos caracteres a excepción de :
  51.              * el id se escribe en el campo en cualquier forma sea mayúscula o minúscula y luego se comparara
  52.              * colocándolo en mayúscula contra lo que está en el valor
  53.              *
  54.              * No hay que preocuparse que el usuario escriba otros caracteres porque datepicker
  55.              * se encarga de solo dejar escribir números y guion y otros caracteres que se usan para formar una fecha
  56.              * por lo que solo va a estar lo que hayas colocado por defecto
  57.              *
  58.              * Así es con .blur y con .change
  59.              */
  60.             if( $( this ).val( ).toUpperCase() == ( $( this ).attr("id").toUpperCase() + ":" ) ){
  61.                 $( this ).val( "" ).addClass( "writing" );
  62.             }
  63.         }).blur(function(){
  64.             if( $( this ).val( ) == "" || $( this ).val( ).toUpperCase() == ( $( this ).attr("id").toUpperCase() + ":" ) ){
  65.                 $( this ).val( $( this ).attr("id").toUpperCase() + ":" ).removeClass( "writing" );
  66.             }
  67.         }).change(function(){
  68.             if( $( this ).val( ) != "" && $( this ).val( ).toUpperCase() != ( $( this ).attr("id").toUpperCase() + ":" ) ){
  69.                 $( this ).addClass( "writing" );
  70.             }
  71.             else{
  72.                 $( this ).val( $( this ).attr("id").toUpperCase() + ":" ).removeClass( "writing" );
  73.             }
  74.         });
  75.     });
  76.     </script>
  77. </head>
  78.  
  79. <p>Dates: <input type="text" id="from" value="FROM:"><input type="text" id="to" value="TO:"></p>
  80.  
  81. </body>
  82. </html>

Lo único que no logro solventar es que cuando el usuario a seleccionado los dos campos sin seleccionar fecha solo seleccionó y luego quito cuando selecciona una fecha, despues de haber hecho lo que indiqué anteriormente, se coloca en el campo que seleccionó la fecha que quiso y en el otro campo otra fecha, puede ser la que está seleccionado como puede ser la fecha corriente. Si alguien logra que se evite esto seria bueno que lo postee para que así nos podamos beneficiar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #2 (permalink)  
Antiguo 14/09/2012, 11:47
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Información Respuesta: [Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Hola abimaelrc que tal.
Cita:
Iniciado por abimaelrc Ver Mensaje
Lo único que no logro solventar es que cuando el usuario a seleccionado los dos campos sin seleccionar fecha solo seleccionó y luego quito cuando selecciona una fecha, despues de haber hecho lo que indiqué anteriormente, se coloca en el campo que seleccionó la fecha que quiso y en el otro campo otra fecha, puede ser la que está seleccionado como puede ser la fecha corriente. Si alguien logra que se evite esto seria bueno que lo postee para que así nos podamos beneficiar.
  1. Probé el código tal cual y cuando selecciono una fecha en el primer datepicker con doble-click, esta acción agrega la fecha escogida a ambos input's.
  2. Noto que se puede escoger en ambos la misma fecha aun así no se haga como describí en el punto anterior.

Y el problema esta en que ambos adquieren la misma fecha cuando se realiza lo que comentas.

Interesante problema; a simple vista parece que la linea involucrada es la nº 35. Le echaré un par de vistazos más.
  #3 (permalink)  
Antiguo 15/09/2012, 11:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: [Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Si todavía no logro resolver ese problema , sigo intentando a ver donde es que pasa...
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 16/09/2012, 01:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: [Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Estas peleando con algo que seguramente sea un bug de datepicker, separa las instancias, como en el ejemplo de jquery ui y seguramente funcione correctamente. o si te gusta autoflagelarte podes debugear datepicker :P

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 16/09/2012, 14:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: [Aporte] Datepicker jquery interactuar con el nombre del campo en el valor

Ya empezamos con tu amor/odio hacia jq... (no me atrevo a decirlo ), me voy a autoflagelar para ver donde esta jajajaja
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: datepicker, html, input, js, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:15.