2010-02-04 13 views
15

Ich benutze JQuery UI Datepicker: http://jqueryui.com/demos/datepicker/JQuery UI Datepicker: einen Link Trigger picker machen

hier umgesetzt:

http://www.clients.eirestudio.net/old/

ich einen Link als Auslöser verwenden möchten, aber ich kann nicht Mach es zur Arbeit.

Hier ist mein Code:

// JQuery UI 
$("#datepicker").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     maxDate: '0m 0d', 
     minDate: new Date(2000, 1 - 1, 1), 
     dateFormat: 'dd-mm-yy' 
}); 

<p class="clearfix hidden"> 
    <input id="" class="input float datepicker" type="input" name="" value="" /> 
    <a class="calendar ui-icon ui-icon-calendar">Date</a> 

    <span class="mid-info">To</span> 
    <input id="" class="input datepicker" type="input" name="" value="" /> 
    <a class="calendar" href="#">Date</a> 
</p> 

Irgendwelche Ideen?

Antwort

6

Dies jemand anderes helfen könnte.

Ich endete damit, es mit JQuery UI zu arbeiten.

-Code unten:

$(".date-pick").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     maxDate: '0m 0d', 
     minDate: new Date(2000, 1 - 1, 1), 
     dateFormat: 'dd-mm-yy', 
     showOn: 'button', 
     buttonImage: 'http://www.example.com/elements/images/calendar.png', 
     buttonImageOnly: true 
     }); 

und ich änderte die Datepicker-ID auf dem neuesten Stand-pick Klasse

+0

Mit welchem ​​HTML hast du gearbeitet? Hast du den Links auch die Date-Pick-Klasse hinzugefügt? Probleme damit an meinem Ende. – Steve

+1

Das beantwortet die Frage überhaupt nicht lol. Dies verwendet keinen Link zum Auslösen des Kalenders - es wird nur mit dem ButtonImage geöffnet. Benötigt immer noch ein Eingabefeld, das Sie haben können oder nicht ... – nzifnab

0

Von jqueryui scheint es, wie Sie showOn hinzufügen sollten und vielleicht (weiß nicht, ob es erforderlich ist) buttonImage:

$("#datepicker").datepicker({ 
    changeMonth: true, 
    changeYear: true, 
    maxDate: '0m 0d', 
    minDate: new Date(2000, 1 - 1, 1), 
    dateFormat: 'dd-mm-yy', 
    showOn: 'button', 
    buttonImage: 'images/calendar.gif', // adapt this to your image 
    buttonImageOnly: true 
}); 
+0

Danke für die Antwort. Leider habe ich das versucht und es scheint auch nicht zu funktionieren. –

+0

Ich habe die Funktion 'datepicker()' irgendwie vergessen und die Eigenschaft 'buttonImage' muss wahrscheinlich angepasst werden, wie Ihre eigene Antwort vermuten lässt. Entschuldige die Ungenauigkeit. –

6

Versuchen Sie es mit:

<a href="javascript:void(0);" onclick="$.datepicker._showDatepicker($('#inputID')[0]);">Text here</a> 
    <input type="hidden" id="inputID"/> 
    ... 
    <script type="text/javascript"> 
     $(document).ready(
     function() 
     { 
      $('#inputID').datepicker(); 
     } 
    ); 
    </script> 
+0

Bei weitem die einfachste Lösung mit dem am wenigsten hinzugefügten Code und hijinks. Vielen Dank! – nicholeous

+0

Yep, ich mag dies :) +1 – entiendoNull

27

Sie etwas tun könnte, wie ich es tat in this fiddle

HTML:

<a href="#" id="toggleDP">Toggle</a> 

JS:

var $dp = $("<input type='text' />").hide().datepicker({ 
    onSelect: function(dateText, inst) { 
     $("body").append("<div>Selected "+dateText+"</div>"); 
    } 
}).appendTo('body'); 

$("#toggleDP").button().click(function(e) { 
    if ($dp.datepicker('widget').is(':hidden')) { 
     $dp.show().datepicker('show').hide(); 
     $dp.datepicker("widget").position({ 
      my: "left top", 
      at: "right top", 
      of: this 
     }); 
    } else { 
     $dp.hide(); 
    } 

    //e.preventDefault(); 
}); 
+0

Danke, bisher die beste Lösung, die ich gefunden habe :) – Siim

+3

Diese Lösung scheint nicht in Chrome 29 mit jQuery 1.9 funktioniert – kibibu

+0

Works für mich auf Chrom, das einzige Problem Ich habe, dass es mir nach unten scrollt, also habe ich es so bearbeitet, dass ich den Datepicker nur einmal hinzufüge, wenn ich auf den Link klicke und ihn an das Elternelement des aktuellen angeklickten Elements angehängt habe. –

18

ich dies nur gelöst sehr leicht in meinem app - wenn Sie Ihre picker mit einem Textfeld geöffnet haben, können Sie diese Lösung verwenden. Ich habe einen $('#date_field').focus() Link zum Icon hinzugefügt. Klicken Sie auf das Symbol, das Textfeld erhält den Fokus und löst den Datapicker aus. Voila.

+1

Ich mag diese Lösung, schnell und einfach. – Winterain

+1

Danke! Diese Technik ist auch nützlich, um eine einfache Schaltfläche zu erstellen, die den Datepicker beim Klicken öffnet (ohne die zusätzliche Seitenschaltfläche, die erstellt wird, wenn Sie den "onShow:" button "' datepicker -Parameter verwenden), wie folgt: '' Wo anderswo machst du das normale '$ (" # date "). datepicker()'. – Ghopper21

+1

Solch eine einfache Idee ... danke! –

0

Mit inline datepicker ist es einfacher, dies zu tun. Überprüfen Sie meine JSFiddle.

HTML

<a href="#" class="datepicker">Pick a date</a> 

JS

var dpToggler = $('a.datepicker').button(), 
    dp = $("<div />").css('position', 'absolute').hide().datepicker().appendTo(dpToggler); 

dpToggler.on('click', function(e) { 
    e.preventDefault(); 
    if (dp.is(':hidden')) { 
    dp.show().position({ 
     my: 'left top', 
     at: 'right top', 
     of: this 
    }); 
    } else { 
    dp.hide(); 
    } 
}); 
4

Basierend auf @camilokawerin Antwort, habe ich dies und ich finde es die easieast und sauberste Lösung:

HTML:

<a href="#" id="selec">Click</a> <div id="datepicker" style="display:none"></div> 

JS:

$("#datepicker").datepicker(); 
$('#selec').click(function(){ 
    $('#datepicker').toggle(); 
}); 
+0

Scheint nett, aber wie erhalten Sie das ausgewählte Datum? – tiho

+1

@tiho Ich nehme es in der 'onSelect' Methode auf ... Alles ist in der Dokumentation http://api.jqueryui.com/datepicker/#option-onSelect – Pere