2009-04-11 48 views

Respuesta

9

$ (". Ui-datepicker"). Draggable() ¿no funciona?

+0

de hecho lo hace. Obviamente soy nuevo en jQuery UI así que gracias por la ayuda en una pregunta noobish. –

+0

no hay problema :) para saber qué clases y elementos de ids cargados a través de javascript tienen, instale Firebug. – zalew

+0

Ay, créame, Firebug es mi amigo. Simplemente no sabía si era posible hacer arrastrable el marcador de fecha. –

6

El pedido es importante.

$('#myCalendarInput').datepicker(); 
$('#ui-datepicker-div').draggable(); 

EDITAR: Hay una diferencia sutil entre los equipos de respuesta @JZ y la mía. Usando el ejemplo de JZ, cualquier marcador de fecha en la página será arrastrable, incluso aquellos que están en línea (asociados con un DIV en lugar de un elemento de entrada). Mi código solo hará que los datapickers emergentes sean arrastrables. El complemento datepicker crea un único DIV (llamado ui-datepicker-div) para todas las ventanas emergentes y lo reutiliza para cualquier entrada en la página a la que se le ha aplicado el marcador de fecha. Para los DIV o SPAN en línea, crea un nuevo datepicker sin nombre dentro del DIV/SPAN que tiene la clase .ui-datepicker, pero no tiene el nombre. En este caso, mi código no hará que el datepicker sea arrastrable, podría decirse que es el comportamiento correcto, pero JZ lo hará ya que coincidirá en función de la clase.

Ejemplo:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#calendar').datepicker(); 
    $('#calendar2').datepicker(); 
    $('#calendar3').datepicker(); 
    $('#ui-datepicker-div').draggable(); 
}); 
</script> 

<div> 
Calendar: <input id="calendar" type="text" /><br /> <-- draggable 
Calendar2: <input id="calendar2" type="text" /><br/> <-- draggable 
Fixed calendar: <div id="calendar3"></div> <-- fixed 
</div> 
+0

No he intentado esto porque la respuesta de JZ funcionó, pero ¿no te toparía con un problema con múltiples datapickers en la misma página con esta solución? –

+0

Hay una diferencia entre mi código y JZ. Para un elemento de entrada, datepicker solo creará un único ui-datepicker-div y lo reutilizará para todas las entradas que requieran una ventana emergente. Sin embargo, si utiliza un calendario en línea, el código JZ lo hará arrastrable, mientras que el mío no lo hará ya que no tendrá la misma identificación. – tvanfosson

+0

Ah. Gracias por la explicación. +1 –

2

Puede agregar un evento en el selector de fechas y utilizarlo para hacer que se pueda arrastrar.

//Add an event "onCreate" 
$.datepicker._updateDatepicker_Old = $.datepicker._updateDatepicker; 
$.datepicker._updateDatepicker = function(inst) { 
    this._updateDatepicker_Old(inst); 

    var onCreate = this._get(inst, 'onCreate'); 
    if (onCreate !== null) { 
     onCreate(inst); 
    } 
}; 

Después de llamar a datepicker e implementa la función en Crear para que sea arrastrable.

$(function() { 
    //Create datepicker 
    $('#datepicker').datepicker({ 
     onCreate: function(inst) { 
      $(inst.dpDiv).draggable(); 
     } 
    }); 
});​ 

Example jsfiddle

+0

Gracias por la respuesta. Esa es una idea interesante, pero parece demasiado complejo lograr lo mismo que la respuesta aceptada. Prefiero no hackear cosas en jQuery UI si no es necesario. –

Cuestiones relacionadas