2009-04-11 11 views

Répondre

9

$ (". Ui-datepicker"). Draggable() ne fonctionne pas?

+0

En effet, il fait. Je suis évidemment nouveau à jQuery UI alors merci pour l'aide sur une question noobish. –

+0

pas de problème :) pour savoir quelles sont les classes et les éléments d'ids chargés via javascript, installez Firebug. – zalew

+0

Oh crois-moi, Firebug est mon ami. Je ne savais simplement pas s'il était possible de faire glisser le datpicker. –

6

La commande est importante.

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

EDIT: Il y a une différence subtile entre les fournitures @JZ de réponse et la mienne. En utilisant l'exemple de JZ, n'importe quel outil de date sur la page sera déplaçable, même ceux qui sont en ligne (associés à un DIV au lieu d'un élément en entrée). Mon code ne fera que déplacer les pop-up popup. Le plugin datepicker crée un seul DIV (appelé ui-datepicker-div) pour tous les popups et le réutilise pour toute entrée sur la page à laquelle le datpicker a été appliqué. Pour les DIVs en ligne ou les SPAN, il crée un nouveau marqueur de date sans nom dans le DIV/SPAN qui a la classe .ui-datepicker, mais n'a pas le nom. Dans ce cas, mon code ne rendra pas le datepicker draggable, sans doute le comportement correct, mais JZs le fera car il correspondra en fonction de la classe.

Exemple:

<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

Je n'ai pas essayé cela puisque la réponse de JZ a fonctionné, mais ne vous heurteriez-vous pas à un problème avec plusieurs datpickers sur la même page avec cette solution? –

+0

Il y a une différence entre mon code et celui de JZ. Pour un élément d'entrée, datepicker ne créera qu'un seul ui-datepicker-div et le réutilisera pour toutes les entrées nécessitant un popup. Si vous utilisez un calendrier en ligne, cependant, le code JZ le rendra draggable alors que le mien ne le fera pas puisqu'il n'aura pas le même identifiant. – tvanfosson

+0

Ah. Merci pour l'explication. +1 –

2

Vous pouvez ajouter un événement dans datepicker et l'utiliser pour faire draggable. Après avoir appelé datepicker et implémente la fonction onCreate pour le rendre draggable.

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

Example jsfiddle

+0

Merci pour la réponse. C'est une idée intéressante, mais il semble trop complexe d'accomplir la même chose que la réponse acceptée. Je préfère ne pas pirater les choses sur l'interface utilisateur jQuery si je n'ai pas à le faire. –