jQuery datepicker đặt ngày đã chọn, nhanh chóng


121

Làm cách nào để thay đổi ngày đã chọn của jquery Bộ chọn ngày một cách tự động khi đang di chuyển? Tôi đã nói rằng đã tạo một bộ chọn ngày nội tuyến. Sau đó, sau một thời gian, tôi muốn phản ánh một ngày khác ở đó mà không cần tạo lại trình chọn ngày từ đầu.

Tôi đã thử phương pháp setDate, nhưng không hoạt động và không có nhiều tài liệu trong tài liệu .

Có một plugin khác (mở rộng?) Ở đây , nhưng tôi muốn sử dụng plugin được vận chuyển cùng với jquery.ui.all.js.

Câu trả lời:


187

Bạn đang sử dụng phiên bản jQuery-UI nào? Tôi đã thử nghiệm những điều sau với 1.6r6, 1.7 và 1.7.1 và nó hoạt động:

//Set DatePicker to October 3, 2008
$('#dateselector').datepicker("setDate", new Date(2008,9,03) );

16
sử dụng defaultDate thay vì setDate, nếu setDate không hoạt động.
bingjie2680

8
nhưng đối với tôi nó không hoạt động theo cách nào đó. ngày đã được thay đổi. nhưng ngày đã chọn không xuất hiện trong lịch. nó chỉ cho tôi hôm nay được đánh dấu.
Prageeth godage

28

Kiểm tra xem ngày bạn đang cố gắng đặt có nằm trong phạm vi ngày được phép không nếu tùy chọn Ngày tối thiểu hoặc Ngày tối đa được đặt.


10

Ví dụ này cho thấy cách sử dụng giá trị mặc định trong lịch thả xuống và giá trị trong hộp văn bản. Nó cũng hiển thị cách đặt giá trị mặc định cho ngày trước đó.

Đã chọn Ngày là một biến khác chứa ngày đã chọn hiện tại của điều khiển lịch

    var date = new Date();
    date.setDate(date.getDate() - 1);

    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd",
        defaultDate: date,
        onSelect: function () {
            selectedDate = $.datepicker.formatDate("yy-mm-dd", $(this).datepicker('getDate'));
        }
    });

    $("#datepicker").datepicker("setDate", date);

8

Lưu ý rằng đối với DatePicker của Keith Wood ( http://keith-wood.name/datepickRef.html ) các hoạt động sau - lưu ý rằng cài đặt ngày mặc định là cuối cùng:

    $('#datepicker').datepick({
        minDate: 0,
        maxDate: '+145D',
        multiSelect: 7,
        renderer: $.datepick.themeRollerRenderer,
        ***defaultDate: new Date('1 January 2008')***
    });

7

Vì một số lý do, trong một số trường hợp, tôi không thể làm cho setDate hoạt động.

Một giải pháp mà tôi tìm thấy là chỉ cần cập nhật thuộc tính giá trị của đầu vào đã cho. Tất nhiên, bản thân trình chọn ngày sẽ không được cập nhật nhưng nếu những gì bạn chỉ cần tìm là hiển thị ngày, nó hoạt động tốt.

var date = new Date(2008,9,3);
$("#your-input").val(date.getMonth()+"/"+date.getDate()+"/"+date.getFullYear());
// Will display 9/3/2008 in your #your-input input

6
Có một đợt giảm giá trong nhiều tháng, vì vậy bạn cần (date.getMonth () + 1)
Adam

1
setDate không làm việc nếu đặt trong các tùy chọn đầu tiên, tôi đã có chuỗi nó sau đó với .datepicker ( 'setDate', ...)
martinedwards

4
$('.date-pick').datePicker().val(new Date()).trigger('change')

cuối cùng, đó là những gì tôi tìm kiếm trong vài giờ qua! Tôi cần bắt đầu thay đổi, không chỉ ngày thiết lập trong trường văn bản!


2
Nó phải là .datepicker()không.datePicker()
Arslan Tabassum

3

Đây là một chủ đề cũ nhưng tôi chỉ muốn cung cấp một số thông tin về cách tôi đã sử dụng. Nếu bạn muốn đặt ngày hôm nay, bạn có thể áp dụng nó như dưới đây.

 $("#datepickerid").datepicker("setDate", "0");

Nếu bạn muốn đặt một số ngày trước / sau ngày hiện tại thì sử dụng biểu -/+tượng ký hiệu số ngày bạn muốn như bên dưới.

 $("#datepickerid").datepicker("setDate", "-7");
 $("#datepickerid").datepicker("setDate", "+5");

2

setDate dường như chỉ là vấn đề với bộ chọn ngày nội tuyến được sử dụng trong giao diện người dùng jquery, lỗi cụ thể là InternalError: quá nhiều đệ quy.


2

Điều này phù hợp với tôi:

$("#dateselector").datepicker("option", "defaultDate", new Date(2008,9,3));

2

Trong Html, bạn có thể thêm trường đầu vào của mình bằng công cụ chọn ngày như thế này

<input class="form-control date-picker fromDates" id="myDate" type="text">

và sau đó trong java script, khởi tạo trình chọn ngày của bạn và đặt giá trị của bạn thành ngày như thế này,

$('.fromDates').datepicker({
                maxDate: '0',
                dateFormat: "dd/mm/yy",
                changeYear: true,
                changeMonth: true,
                yearRange: "-100:+0"
            });

var myDateVal = moment('${value}').format('DD/MM/YYYY');
$('#myDate').datepicker().datepicker('setDate', myDateVal );

(Tại đây thuộc tính fromdate hiển thị các ngày trước của ngày hiện tại)


0
var dt = new Date();
var renewal = moment(dt).add(1,'year').format('YYYY-MM-DD');
// moment().add(number, period)
// moment().subtract(number, period)
// period : year, days, hours, months, week...

Các câu trả lời chỉ có mã không được khuyến khích trên Stack Overflow vì chúng không giải thích cách nó giải quyết vấn đề. Vui lòng chỉnh sửa câu trả lời của bạn để giải thích mã có chức năng gì và cách nó trả lời câu hỏi, để nó hữu ích cho những người dùng khác cũng như OP.
FluffyKitten

-1

Tôi cũng gặp rất nhiều rắc rối với phương thức setDate. dường như chỉ hoạt động trong v1. Tuy nhiên, những gì dường như hoạt động bằng cách sử dụng phương thức dpSetSelected:

    $("#dateselector").dpSetSelected(new Date(2010, 0, 26).asString());

chúc may mắn!


-1

hoặc bạn chỉ có thể có

$('.date-pick').datePicker().val(new Date()).trigger('change')

1
Nó phải là .datepicker()không .datePicker().
Florin Frătică
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.