2012-06-25 34 views
8

Tôi nhận được một nút và một đầu vào bị ẩn.jqueryui datepicker với đầu vào bị ẩn

Tôi muốn trình mở khóa ngày mở bên dưới nút tôi nhấp vào. Và ngày đã chọn được chèn vào đầu vào bị ẩn.

Tôi không muốn tạo nút mới (sử dụng tùy chọn datepicker) và tôi không muốn hiển thị thông tin nhập.

<button type="button" class="btn" id="date_button">Select Date...</button> 

<input type="hidden" name="date" id="date_field" /> 

<script> 
    $('#date_button').datepicker({ 
     showOn: "button", 
     onSelect: function(dateText) { 
      $('#date_field').val(dateText); 
      $('#date_button').text(dateText); 
     } 
    }) 
</script> 

Bất kỳ ý tưởng nào?

+0

Tôi có thể xem mã code của bạn không ase? –

Trả lời

1

Đây là một chút hacky, nhưng nó dường như làm việc okay:

  1. Gắn datepicker đến input thay vì nút.
  2. Đặt lại vị trí của thanh công cụ ngày tháng bên dưới nút khi mở.
var $button = $("#date_button"), 
    left = $button.offset().left, 
    top = $button.offset().top + $button.height(); 

$('#date_field').datepicker({ 
    onSelect: function(dateText) { 
     $('#date_field').val(dateText); 
     $button.text(dateText); 
    }, 
    beforeShow: function (event, ui) { 
     setTimeout(function() { 
      ui.dpDiv.css({ left: left, top: top });  
     }, 5);    
    } 
}); 

$button.on("click", function() { 
    $("#date_field").datepicker("show"); 
}); 

Ví dụ:..http://jsfiddle.net/StUsH/

+0

nó dường như không hoạt động nữa. –

+1

@ J.Ghyllebert Tôi đã cập nhật jsfiddle thành phiên bản hoạt động. Dường như có một vấn đề trong jsfiddle với jQuery 1.9.1 và jQueryUI 1.9.2, các cuộn cảm biến datepicker trên '$ .browser.msie'. – kibibu

+1

Thay vì sử dụng đầu vào bị ẩn, hãy sử dụng kiểu nhập văn bản và ẩn nó bằng CSS. Việc khởi tạo datepicker trên đầu vào bị ẩn sẽ gây ra lỗi khi định vị. –

12

Tôi đã làm điều này bằng cách thực hiện một .show() tập trung() ẩn() - hoạt động hoàn hảo mặc dù đó là một chút ô uế:

$(document).ready(function() { 
    $('input').datepicker(); 
     $('#mybutton').click(function() { 
     $('input').show().focus().hide(); 
    }); 
}); 

http://jsfiddle.net/JKLBn/

+0

Không hoạt động trong IE với các phiên bản jQuery mới hơn. (Có lẽ vì IE đặt tiêu điểm không đồng bộ) –

Các vấn đề liên quan