Làm cách nào để tôi điền trước hộp văn bản jQuery Datepicker vào ngày hôm nay?


237

Tôi có một lịch Datepicker jQuery rất đơn giản:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
});

và tất nhiên trong HTML ...

<input type="text" size="10" value="" id="date_pretty"/>

Ngày hôm nay được tô sáng độc đáo cho người dùng khi họ hiển thị lịch, nhưng làm cách nào để jQuery có thể tự điền trước hộp văn bản với ngày hôm nay khi tải trang mà không cần người dùng làm gì? 99% thời gian, mặc định ngày hôm nay sẽ là những gì họ muốn.


7
Câu trả lời phổ biến nhất là tốt hơn mà câu trả lời được chấp nhận. tốt hơn là thay đổi câu trả lời được chấp nhận.
ahmadali shafiee


1
@ahmadalishafiee (và mọi người khác). Giải pháp hiện đang được chấp nhận đã được chấp nhận vào ngày 2015-05-07.
Teepeemm

Câu trả lời:


569

Cập nhật: Có những báo cáo này không còn hoạt động trong Chrome.

Điều này ngắn gọn và thực hiện công việc (lỗi thời):

$(".date-pick").datepicker('setDate', new Date());

Điều này ít súc tích hơn, sử dụng chuỗi cho phép nó hoạt động trong chrome (2019-06-04):

$(".date-pick").datepicker().datepicker('setDate', new Date());

3
Giải pháp này rất thanh lịch
ẩn

2
Đây là một trong những thực sự làm việc cho tôi và không phải là giải pháp được chấp nhận. Cảm ơn bạn
Mehdiway

7
Điều này sẽ không hoạt động, đầu tiên bạn nên gọi $ (". Date-pick"). Datepicker (); và sau đó $ (". ngày chọn"). datepicker ('setDate', ngày mới ());
Misha Akopov

9
Không còn hoạt động trong Chrome sau khi cập nhật trình duyệt gần đây
Max Flex

3
Làm. Tôi đang thiết lập $(".date-pick").datepicker().datepicker('setDate', new Date()); tho
seebcakes

221

Bạn phải gọi FIRpicker đầu tiên ()> sau đó sử dụng 'setDate' để có được ngày hiện tại.

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

HOẶC chuỗi cuộc gọi phương thức setDate của bạn sau khi khởi tạo datepicker của bạn, như được ghi chú trong một nhận xét về câu trả lời này

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());

Nó sẽ KHÔNG làm việc với chỉ

$(".date-pick").datepicker("setDate", new Date());

LƯU Ý : Các tham số setDate được chấp nhận được mô tả ở đây


3
Sử dụng jQueryUI 1.8 tôi thấy giải pháp này là cách duy nhất (lành mạnh) để thực hiện điều này.
brianz

13
$ (". bộ chọn"). datepicker (). datepicker ("setDate", ngày mới ()); sẽ hoạt động và không làm cho jQuery tìm kiếm DOM hai lần.
abc123

1
Tuyệt vời, câu trả lời được chấp nhận chỉ nói $ (". Date-pick"). Datepicker ("setDate", new Date ()); và nó không hoạt động mà không gọi lần đầu tiên $ (". date-pick"). datepicker (); câu trả lời của bạn tốt hơn nhiều
Misha Akopov

71
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

dường như làm việc, nhưng có thể có một cách tốt hơn ra khỏi đó ..


Điều này hoạt động khá tốt ngoại trừ hai điều: 1) Tôi đã hy vọng sử dụng phương thức jQuery để có được ngày hiện tại, nhưng có lẽ nó không thành vấn đề. 2) giải pháp này tạo ra một giá trị chính xác một tháng trước ngày hôm nay!
Marcus

2
Oh bạn nói đúng! check it out - w3schools.com/jsref/jsref_obj_date.asp - tháng là 0-11 - bạn sẽ có thêm 1 .. tò mò, getDate là 1-31, nhưng getMonth là 0-11 ..
lucas

3
Có một cách dễ dàng hơn .. xem bài viết của tôi dưới đây.
Ravi Ram

Giải pháp này hãy để hiển thị văn bản trực tiếp và đặt ngày đồng thời trong khi giải pháp của CiscoIPPhone cần một bước khác để hiển thị giá trị mà không cần mở bộ chọn.
Afshar Mohebbi

4
Đối với setDatebạn cũng có thể sử dụng ký hiệu tương đối thông thường của datepicker, ví dụ để lấy ngày hôm sau chỉ cần gõ .datepicker('setDate', '+1d').
kosii

59

Các setDate()phương pháp đặt ngày và cập nhật sự kiểm soát liên quan. Đây là cách thực hiện:

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");

Bản giới thiệu

Như đã đề cập trong tài liệu, setDate()vui vẻ chấp nhận đối tượng Ngày, số hoặc chuỗi JavaScript:

Ngày mới có thể là một đối tượng Ngày hoặc một chuỗi ở định dạng ngày hiện tại (ví dụ: '01 / 26/2009 '), một số ngày kể từ hôm nay (ví dụ: +7) hoặc một chuỗi các giá trị và dấu chấm (' y 'cho năm, 'm' trong nhiều tháng, 'w' trong nhiều tuần, 'd' trong nhiều ngày, ví dụ '+ 1m + 7d') hoặc null để xóa ngày đã chọn.

Trong trường hợp bạn đang tự hỏi, thiết lập defaultDatethuộc tính trong hàm tạo không cập nhật điều khiển liên quan.


1
Tại sao nó trong bản demo của bạn nó hoạt động. Khi tôi sao chép mã này vào trang web của mình, hộp thoại sẽ bật lên khi tải pg.
chobo2

1
Điều này làm việc cho tôi - câu trả lời được chấp nhận và các tùy chọn khác ở trên không.
lydiat

Đây là một giải pháp tốt hơn nhiều so với bất kỳ điều nào ở trên.
adamj

Câu trả lời tốt nhất cho câu hỏi này vào thời điểm hiện tại mặc dù tôi cần định dạng ngày là "mm-dd-yy" để khớp với bộ chọn ngày.
John81

26

Đặt thành ngày hôm nay :

$('#date_pretty').datepicker('setDate', '+0');

Đặt thành ngày hôm qua :

$('#date_pretty').datepicker('setDate', '-1');

Và như vậy với bất kỳ số ngày trước hoặc sau ngày hôm nay .

Xem jQuery UI Phương thức làm quen với Java setDate .


1
Tuyệt vời, như những người khác đã đề cập, bạn hẳn đã gọi datepicker () một lần rồi,$(".date-pick").datepicker("setDate", '+0');
jwbensley

Điều này cũng hoạt động như tôi mong muốn, vì dateFormat của tôi cần khớp với định dạng ngày của MySQL (yy-mm-dd). SetDate này thêm phần đệm không vào tháng và ngày.
jjohn

9

Giải pháp là:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var prettyDate = month + '/' + myDate.getDate() + '/' + myDate.getFullYear();
    $("#date_pretty").val(prettyDate);
});

Cảm ơn Grayghost!


7

Mã này sẽ đảm bảo sử dụng định dạng ngày của bạn:

$('#date-selector').datepicker('setDate', new Date());

Không cần phải áp dụng lại định dạng, nó sử dụng định dạng ngày tháng được xác định trước bởi bạn khi khởi tạo datepicker (nếu bạn đã gán nó!);)


7

Cái này làm việc cho tôi

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());

5

Mã của David K ​​Egghead hoạt động hoàn hảo, cảm ơn bạn!

$(".date-pick").datepicker(); 
$(".date-pick").datepicker("setDate", new Date()); 

Tôi cũng đã cố gắng để cắt nó một chút và nó cũng hoạt động:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 

4
$('input[name*="date"]').datepicker({
        dateFormat: 'dd-mm-yy',
        changeMonth: true,
        changeYear: true,
        beforeShow: function(input, instance) { 
            $(input).datepicker('setDate', new Date());
        }
    });

2

Để đặt ngày tháng theo thời gian mặc định nhất định (ngày hiện tại trong trường hợp của tôi) khi tải, VÀ sau đó có tùy chọn để chọn một ngày khác, cú pháp là:

    $(function() { 
        // initialize the datapicker
        $("#date").datepicker();

        // set the time
        var currentDate = new Date();
        $("#date").datepicker("setDate",currentDate);

    //  set the options for the button  
        $("#date").datepicker("option",{
            dateFormat: 'dd/mm',
            showOn: "button",
          // whatever option Or event you want 
        });
  });

giải pháp này hiệu quả với tôi trong chrome, những giải pháp khác được liệt kê ở đây thì không
Mike Volmar

2

Để điền ngày trước, trước tiên, bạn phải khởi tạo ngày tháng, sau đó chuyển giá trị tham số setDate.

$("#date_pretty").datepicker().datepicker("setDate", new Date());

1

Chỉ cần nghĩ rằng tôi sẽ thêm hai xu của tôi. Công cụ chọn đang được sử dụng trên biểu mẫu thêm / cập nhật, do đó cần phải hiển thị ngày đến từ cơ sở dữ liệu nếu chỉnh sửa bản ghi hiện có hoặc hiển thị ngày hôm nay nếu không. Dưới đây là hoạt động tốt cho tôi:

    $( "#datepicker" ).datepicker();
    <?php if (!empty($oneEVENT['start_ts'])): ?>
       $( "#datepicker" ).datepicker( "setDate", "<?php echo $startDATE; ?>" );
    <? else: ?>
       $("#datepicker").datepicker('setDate', new Date());   
    <?php endif; ?>
  });

1

Bạn có 2 lựa chọn:

TÙY CHỌN A) Đánh dấu là "hoạt động" trong lịch của bạn, chỉ khi bạn nhấp vào đầu vào.

Js :

$('input.datepicker').datepicker(
                        {   
                            changeMonth: false,
                            changeYear: false,
                            beforeShow: function(input, instance) { 
                                $(input).datepicker('setDate', new Date());
                            }
                        }                         
                     );

Css :

div.ui-datepicker table.ui-datepicker-calendar .ui-state-active,
        div.ui-datepicker table.ui-datepicker-calendar .ui-widget-content .ui-state-active  {
            background: #1ABC9C;
            border-radius: 50%;
            color: #fff;
            cursor: pointer;
            display: inline-block;
            width: 24px; height: 24px;
        }​

TÙY CHỌN B) Nhập theo mặc định với ngày hôm nay. Trước tiên, bạn phải cư trú trong buổi hẹn hò.

$ ("input.datepicker"). datepicker (). datepicker ("setDate", ngày mới ());

1
tùy chọn A là tốt vì bộ chọn ngày có thể để trống cho đến khi được chọn vào ngày mà nó mặc định cho đến ngày hiện tại
waxingsatirical

0
var prettyDate = $.datepicker.formatDate('dd-M-yy', new Date());
alert(prettyDate);

Chỉ định PrettyDate cho điều khiển cần thiết.


0

Thử cái này

$(this).datepicker("destroy").datepicker({
            changeMonth: false, changeYear: false,defaultDate:new Date(), dateFormat: "dd-mm-yy",  showOn: "focus", yearRange: "-5:+10"
        }).focus();

0

Điều này hoạt động tốt hơn đối với tôi vì đôi khi tôi gặp khó khăn .datepicker('setDate', new Date());khi gọi vì nó gây rối nếu tôi có bộ đo ngày tháng được cấu hình với các tham số.

$("#myDateText").val(moment(new Date()).format('DD/MM/YYYY'));

0

Dùng cái này:

$(".datepicker").datepicker({ dateFormat: 'dd-M-yy' }).datepicker('setDate', new Date());

Để có được ngày ở định dạng Ví dụ: 10 tháng 10 năm 2019 sẽ dễ hiểu hơn cho người dùng.


-1
$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

Nguồn: http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerDefaultToday.html


Trình duyệt của tôi không nhận ra hàm asString (). Tôi đã làm như thế này: $ (". Date-pick"). Datepicker ('setDate', new Date ());
CiscoIPPhone

1
Tôi nghĩ asString () nên là toString ().
rg88

1
DatePicker của Kevin Luck và DatePicker Jquery UI là hai công cụ hẹn hò rất khác nhau.
Craig Hooghiem

@gamerzfuse Datepicker của jQuery UI dựa trên Kevin Luck.
Mathias Bynens
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.