Bootstrap datepicker ẩn sau khi chọn


97

Làm cách nào để ẩn lịch sau khi chọn một ngày? Có một chức năng cụ thể mà tôi có thể sử dụng không? Mã của tôi bên dưới:

$('#dp1').datepicker({
    format: 'mm-dd-yyyy',
    startDate: '-15d',
    autoclose: true,
    endDate: '+0d' // there's no convenient "right now" notation yet
});

Bất kỳ trợ giúp sẽ được đánh giá cao.


6
Tại sao đây không phải là hành vi mặc định của thư viện?
thể thao

Câu trả lời:


156

Bạn có thể sử dụng sự kiện changedate()để theo dõi thời điểm thay đổi ngày cùng với datepicker('hide')phương pháp ẩn datepickersau khi thực hiện lựa chọn:

$('yourpickerid').on('changeDate', function(ev){
    $(this).datepicker('hide');
});

Bản giới thiệu

CẬP NHẬT

Đây là lỗi với autoclose: true. Lỗi này đã được sửa trong bản chính mới nhất. XEM THE COMMIT. Nhận mã mới nhất từGitHub


7
Tôi khuyên bạn nên kiểm tra thêm xem chế độ xem hiện tại có phải là 'ngày' không: if (ev.viewMode === 'days') {$(this).datepicker('hide');}vì bạn có thể không muốn ẩn trình chọn ngày sau khi chọn một tháng hoặc một năm}
turan

1
Có vẻ như autoclose được đặt thành false theo mặc định ... $(".date").datepicker({... autoclose: true, ... });hoạt động tốt !!!
Dani

45

Nếu đó là bất kỳ trợ giúp nào cho bất kỳ ai, Phiên bản 2.0 của trình chọn ngày bootstrap không còn hoạt động với câu trả lời được chấp nhận.

Đây là cách tôi làm cho nó hoạt động trên cơ sở của tôi:

$('yourpickerid').datepicker({
    format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
    $(this).datepicker('hide');
});

Xem http://bootstrap-datepicker.readthedocs.org/en/latest/events.html#changedate


Có một phiên bản 2? Tôi thấy v1.6.4 là phiên bản mới nhất trên Github
garryp

Sử dụng tự động đóng (xem câu trả lời của @ Salim hoặc câu trả lời được chấp nhận đã cập nhật) thay vì xử lý sự kiện theo cách thủ công. Nếu bạn ẩn trình chọn ngày khi ngày được thay đổi, thì việc cố nhập ngày có thể gây ra hành vi không mong muốn.
Lopsided

35
$('#input').datepicker({autoclose:true});

4
Đây là câu trả lời hoàn hảo. Đây phải là câu trả lời được chấp thuận.
Sarower Jahan

3

Nếu bạn đang tìm cách ghi đè hành vi của lịch nói chung, trên toàn cầu, hãy thử chỉnh sửa chức năng Datepicker (trong ví dụ của tôi là dòng 82),

từ

    this.autoclose = false;

đến

    this.autoclose = true;

Làm việc tốt cho tôi, vì tôi muốn có tất cả các phiên bản lịch của mình hoạt động giống nhau.


2
Không cần thay đổi các thuộc tính mặc định trong thư viện js. Bạn có thể chuyển nó như một thuộc tính của đối tượng cho hàm khi bạn gọi nó. Ví dụ: $ ('# dob'). Datepicker ({format: 'dd / mm / yyyy', autoclose: true});
Zeeshan

3

Sự cố có thể được dừng lại, chặn ẩn sự kiện cho phần tử đầu vào bằng dòng sau:

var your_options = { ... };
$('.datetimepicker').datetimepicker(your_options).on('hide', function (e) {
    e.preventDefault();
    e.stopPropagation();
});


Cảm ơn bạn đời! tôi đã phát điên lên vì đầu vào bị ẩn sau khi chọn ngày, và điều này đã giải quyết được vấn đề của tôi. Chúc mừng!
spacebiker

3
  1. Đơn giản chỉ cần mở bootstrap-datepicker.js
  2. tìm thấy : var defaults = $.fn.datepicker.defaults
  3. bộ autoclose: true

Lưu và làm mới dự án của bạn và điều này nên làm.


2

Trong bootstrap 4 sử dụng "autoHide: true"

$('#datepicker1').datepicker({
    autoHide: true,
    format: 'mm-yyyy',
    endDate: new Date()
});

Câu trả lời tuyệt vời Ankit
Shashank Singh

1

Đóng datetimepicker khi chọn ngày (datetimepicker hiển thị ngày theo thời gian)

$('.datepicker').datepicker({
    autoclose: true,
    closeOnDateSelect: true
}); 

1
$('yourpickerid').datetimepicker({
           pickTime: false
}).on('changeDate', function (e) {
           $(this).datetimepicker('hide');
});

0

Tôi có một giải pháp hoàn hảo:

$('#Date_of_Birth').datepicker().on('changeDate', function (e) {
    if(e.viewMode === 'days')
        $(this).blur();
});

0
$('.datepicker').datepicker({
    autoclose: true
}); 

Một câu trả lời khác cho câu hỏi này hoàn toàn giống với câu trả lời của bạn. OP cũng có điều này autoclose: truetrong mã ví dụ của họ.
93196,93

0

Tôi đã đổi sang datetimepicker và định dạng thành 'DD / MM / YYYY'

$("id").datetimepicker({
    format: 'DD/MM/YYYY',
}).on('changeDate', function() {
    $('.datepicker').hide();
});

0

Ít nhất trong phiên bản 2.2.3 mà tôi đang sử dụng, bạn phải sử dụng autoClosethay thế autoclose. Các vấn đề liên quan đến thư.


0

Bạn có thể thay đổi mã nguồn, bootstrap-datepicker.js . Thêm this.hide();like ne

  if (this.viewMode !== 0) {
    this.date = new Date(this.viewDate);
    this.element.trigger({
        type: 'changeDate',
        date: this.date,
        viewMode: DPGlobal.modes[this.viewMode].clsName
    });
    this.hide();//here
 }

0

Có vấn đề với đồng hồ vẫn hiển thị ngay cả khi tôi đã viết định dạng: 'YYYY-MM-DD' ,

Tôi đã đặt pickTime: falsevà sau khi thay đổi-> ẩn Tôi muốn tập trung-> hiển thị

$('#VBS_RequiredDeliveryDate').datetimepicker({
  format: 'YYYY-MM-DD',
  pickTime: false
});

$('#VBS_RequiredDeliveryDate').on('change', function(){
    $('.datepicker').hide();
});

$('#VBS_RequiredDeliveryDate').on('focus', function(){
    $('.datepicker').show();
});

0

Đối với bộ chọn ngày giờ

$('yourpickerid').datetimepicker({
        format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
        $(this).datetimepicker('hide');
});

0

Sử dụng cái này cho datetimepicker, nó hoạt động tốt

$('#Date').data("DateTimePicker").hide();

0

Tôi chưa thấy điều này được đề cập, nhưng đây là những gì đã sửa nó cho tôi:

switchOnClick: true
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.