2010-02-04 13 views
15

Tôi đang sử dụng giao diện người dùng datepicker JQuery: http://jqueryui.com/demos/datepicker/JQuery UI datepicker: Làm một liên kết kích hoạt datepicker

thực hiện ở đây:

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

Tôi muốn sử dụng một liên kết chính là nguyên nhân nhưng tôi không thể làm cho nó hoạt động.

Đây là mã của tôi:

// 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> 

Bất kỳ ý tưởng?

Trả lời

6

này có thể giúp người khác.

Tôi đã kết thúc để nó hoạt động với giao diện người dùng JQuery.

Mã dưới đây:

$(".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 
     }); 

và tôi đã thay đổi id datepicker đến lớp ngày-pick

+0

Bạn đã kết thúc với HTML nào? Bạn đã thêm lớp chọn ngày vào các liên kết chưa? Có vấn đề với điều này vào cuối của tôi. – Steve

+1

Điều này không trả lời câu hỏi nào cả. Đây không phải là sử dụng một liên kết để kích hoạt lịch - nó chỉ sử dụng buttonImage để mở nó. Vẫn yêu cầu một trường đầu vào mà bạn có thể hoặc thậm chí không có ... – nzifnab

0

Từ jqueryui, nó có vẻ như bạn nên thêm showOn và có thể (không biết nếu nó yêu cầu) 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

Cảm ơn bạn đã trả lời. Thật không may tôi đã thử điều đó và nó dường như không hoạt động. –

+0

Tôi bằng cách nào đó đã quên chức năng 'datepicker()' trước đây, và thuộc tính 'buttonImage' có lẽ phải được điều chỉnh, như câu trả lời của riêng bạn gợi ý. Xin lỗi về sự thiếu chính xác. –

6

Thử sử dụng:

<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

Cho đến nay giải pháp đơn giản nhất với mã được thêm ít nhất và sự xâm nhập. Cảm ơn bạn! – nicholeous

+0

Vâng, tôi thích cái này :) +1 – entiendoNull

27

Bạn có thể làm một cái gì đó giống như tôi đã làm trong 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

Cảm ơn, cho đến nay giải pháp tốt nhất tôi đã tìm thấy :) – Siim

+3

Giải pháp này dường như không hoạt động trong Chrome 29 với jQuery 1.9 – kibibu

+0

Làm việc cho tôi trên chrome, vấn đề duy nhất Tôi có là nó cuộn tôi xuống phía dưới, vì vậy tôi đã chỉnh sửa nó để thêm datepicker chỉ một lần khi nhấp vào liên kết và thêm nó vào phụ huynh của phần tử được nhấp hiện tại. –

18

Tôi chỉ giải quyết điều này rất dễ dàng trong ứng dụng của tôi - nếu bạn có datepicker bạn cởi mở với một lĩnh vực văn bản, bạn có thể sử dụng giải pháp này quá. Tôi đã thêm liên kết $('#date_field').focus() vào biểu tượng. Nhấp vào biểu tượng, trường văn bản sẽ được lấy nét và kích hoạt trình mở khóa ngày để mở. Thì đấy.

+1

Tôi thích giải pháp này, nhanh chóng và dễ dàng. – Winterain

+1

Cảm ơn! Kỹ thuật này cũng hữu ích khi tạo một nút đơn giản để mở datepicker khi nhấn (không có nút phụ được tạo ra nếu bạn sử dụng nút 'onShow:" "' datepicker), như sau: '' ở nơi khác bạn làm bình thường '$ (" # date "). datepicker()'. – Ghopper21

+1

Một ý tưởng đơn giản như vậy ... cảm ơn! –

0

Với inline datepicker dễ dàng hơn để thực hiện việc này. Kiểm tra số JSFiddle của tôi.

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

Dựa trên câu trả lời @camilokawerin, tôi đã làm điều này và tôi thấy nó easieast và giải pháp sạch:

HTML:

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

JS:

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

Có vẻ đẹp nhưng làm thế nào để bạn có được ngày đã chọn? – tiho

+1

@tiho Tôi chọn nó trong phương thức 'onSelect' ... Mọi thứ đều nằm trong tài liệu http://api.jqueryui.com/datepicker/#option-onSelect – Pere