Làm cách nào để đặt giá trị mặc định của ngày nhập vào ngày hôm nay?


403

Các loại đầu vào HTML5 rất tuyệt, công cụ chọn ngày tích hợp mới của Opera rất đơn giản và Chrome ít nhất đã hỗ trợ loại đầu vào mới với triển khai bánh xe quay.

Nhưng có cách nào để đặt giá trị mặc định của trường ngày thành ngày hôm nay không? Với Opera, tôi có thể chọn 'Hôm nay' từ công cụ chọn ngày và ngay khi tôi nhấp vào một trong các nút bước trong Chrome, nó sẽ tăng / giảm từ ngày hôm nay.

Tôi không ngại viết mã cho một giải pháp cho vấn đề nhỏ này, nhưng có vẻ ngớ ngẩn với tôi rằng cả hai trình duyệt đều biết đầy đủ về ngày hiện tại nhưng sẽ không tự động chỉ bật nó (ít nhất là một trình giữ chỗ).



có thể điều này sẽ giúp ích rất nhiều cho stackoverflow.com/questions/14212527/ từ
Musa


4
ngày var = ngày mới (); // tạo đối tượng ngày var min_date = date.toISOString (). lát (0,10); //// lấy phần cụ thể của ngày hiện tại "2018/02/02"
Günay Gültekin

<input type = "date" value = "YYYY-MM-DD" />
Boris Detry

Câu trả lời:


288

Giống như bất kỳ trường nhập HTML nào, trình duyệt sẽ để trống, trừ khi giá trị mặc định được chỉ định với valuethuộc tính.

Thật không may, HTML5 không cung cấp cách chỉ định 'hôm nay' trong valuethuộc tính (mà tôi có thể thấy), chỉ một ngày hợp lệ RFC3339 như thế nào 2011-09-29.

TL; DR Sử dụng YYYY-MM-DDđịnh dạng ngày hoặc nó sẽ không hiển thị


50
đối với người dùng .net: DateTime.Today.ToString ("yyyy-MM-dd")
dvdmn

3
Lưu ý rằng '0' trước tháng và ngày là cần thiết: "2011-09-29" hoạt động, "2011-9-29" thì không.
nico

2
Ruby: (Ngoài ra)DateTime.now.strftime("%Y-%m-%d")
Adam Grant

43
@MartinBarker sẽ không date('Y-m-d')như vậy vì nó yêu cầu số 0 đứng đầu?
SGR

15
Đối với JavaScript: myDate.toLocaleDateString('en-CA')thực hiện mẹo
Ulysse BN

218

Đối tượng Ngày JavaScript cung cấp đủ hỗ trợ tích hợp cho định dạng được yêu cầu để tránh thực hiện thủ công:

Thêm phần này để hỗ trợ múi giờ chính xác:

Date.prototype.toDateInputValue = (function() {
    var local = new Date(this);
    local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
    return local.toJSON().slice(0,10);
});


jQuery:

$(document).ready( function() {
    $('#datePicker').val(new Date().toDateInputValue());
});​


JS thuần túy:

document.getElementById('datePicker').value = new Date().toDateInputValue();

1
Xem ra nếu bạn đang hỗ trợ điện thoại di động. Trên Android 4.0.3 (ít nhất) Tôi đã gặp sự cố trong đó ngày mới được chọn thông qua kiểm soát ngày bật lên được thêm vào ngày hôm nay, thay vì thay thế ngày đó. Ví dụ: bạn có thể kết thúc với 2013-03-252013-03-27 thay vì 2013-03-25 và không có cách nào để người dùng thay đổi nó.
Ben Clayton

1
@Web_Designer Đủ công bằng. Trước tiên, bạn sẽ muốn điều chỉnh local.setMinutes(this.getMinutes() - this.getTimezoneOffset());(cuối cùng là câu trả lời).
brianary

1
Điều này chỉ đặt giá trị tài sản , nó không thiết lập các thuộc tính vì vậy nếu các hình thức được thiết lập lại, nó mặc định là không có giá trị. Ngoài ra, việc sử dụng toISOString sẽ rõ ràng hơn rất nhiều , đây là điều mà toJSON gọi.
RobG

1
@apraetor Trên thực tế, đó là cách khác, vì chỉ các trình duyệt hỗ trợ đầu vào ngày hỗ trợ valueAsDate(bỏ qua IE, Firefox, có thể là Safari, về cơ bản mọi thứ trừ Chrome, Opera, Edge và một số trình duyệt di động). Mọi thứ đều hỗ trợ thuộc valuetính mà giải pháp của tôi sử dụng, ngay cả khi đầu vào ngày rơi trở lại đầu vào văn bản trong các trình duyệt không hỗ trợ, giải pháp khác sẽ bị lỗi hoặc thất bại.
brianary

2
Câu trả lời này có hiệu quả đối với tôi khi sử dụng a input[type=datetime-local]và thay đổi nó thành slice(0,19)HTH
jcruz

189

cái này hiệu quả với tôi

document.getElementById('datePicker').valueAsDate = new Date();

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputEuity


1
nó có hoạt động trong tất cả các trình duyệt không? và phiên bản di động là gì? Thử nghiệm ?
Usman Younas

2
@UsmanY Đó là một phần của thông số HTML5, vì vậy mọi thứ hỗ trợ các kiểu nhập HTML5 đều cần hỗ trợ valueAsDate. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdate
wersimmon

@harbichidian Đề xuất cho đầu vào ngày trước đề xuất cho valueAsDate trong một thời gian. Bạn có một liên kết đến hỗ trợ trình duyệt cho tài sản đó?
brianary

3
Ngày sẽ được chuyển đổi thành thời gian UTC. Nếu bạn đang ở 18:00 trên 2018/03/27 trong -0600 và bạn thiết lập valueAsDateđể new Date(), giá trị trường sẽ được thiết lập để 2018/03/28. Xem austinfrance.wordpress.com/2012/07/09/ khăn
Aupajo

1
Như @Aupajo đã nói, điều này đặt ngày sai nếu bạn không muốn thời gian UTC.
ADJenks

81

Các mã sau hoạt động tốt:

<input type="date" value="<?php echo date('Y-m-d'); ?>" />

Lưu ý rằng điều này phụ thuộc vào PHP.


64
Câu trả lời của bạn phụ thuộc hoàn toàn vào php.
Yëco

1
Nếu biểu mẫu liên hệ của bạn nằm trên trang PHP (ví dụ: trên trang WordPress hoặc shortcode), thì biểu mẫu này hoạt động hoàn hảo. Rất cám ơn Isham!
tristanojbacon

5
Bạn có thể giảm sự dư thừa bằng cách thay đổi <?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>thành<?php echo date('Y-m-d'); ?>
Murray Smith

7
Điều này đặt ngày theo ngày tạo (trong máy chủ, theo múi giờ của máy chủ) của tài liệu HTML. Nó không cần phải khớp với ngày hiện tại, vì thực sự điền vào trường. JavaScript phía máy khách sẽ tốt hơn nếu bạn cần làm những việc phụ thuộc vào phía người dùng.
Jukka K. Korpela

1
bạn cũng có thể sử dụng thẻ ngắn <? = ngày ('Ym-d'); ?>. Một "tiếng vang" ít hơn
sashok_bg

36

Bạn có thể điền giá trị mặc định thông qua javascript như được thấy ở đây: http://jsfiddle.net/7LXPq/

$(document).ready( function() {
    var now = new Date();
    var month = (now.getMonth() + 1);               
    var day = now.getDate();
    if (month < 10) 
        month = "0" + month;
    if (day < 10) 
        day = "0" + day;
    var today = now.getFullYear() + '-' + month + '-' + day;
    $('#datePicker').val(today);
});

Tôi có lẽ sẽ đặt thêm một chút thời gian để xem tháng và ngày có phải là một chữ số không và tiền tố chúng có thêm 0 không ... nhưng điều này sẽ cho bạn một ý tưởng.

EDIT: Đã thêm kiểm tra cho số không thêm


Trong Opera (đã thử nghiệm trên Opera 12 / Windows), điều này sẽ không hoạt động nếu bạn không đặt các số 0 đứng đầu trong tháng và ngày.
Renato

31

Theo định dạng Ymd tiêu chuẩn, nếu bạn đang sử dụng PHP

<input type="date" value="<?php echo date("Y-m-d"); ?>">

2
bạn nên đề cập rằng câu trả lời này hoạt động nếu bạn đang sử dụng php, đây không phải là trường hợp dành cho tất cả mọi người.
Motassem MK

24

HTML

<input type="date" id="theDate">

Mã não

$(document).ready(function() {
    var date = new Date();

    var day = date.getDate();
    var month = date.getMonth() + 1;
    var year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    var today = year + "-" + month + "-" + day;       
    $("#theDate").attr("value", today);
});

bản giới thiệu

Nếu bạn không muốn sử dụng jQuery, bạn có thể làm một cái gì đó như thế này

HTML

<input type="date" id="theDate">

Mã não

var date = new Date();

var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();

if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;

var today = year + "-" + month + "-" + day;       
document.getElementById("theDate").value = today;

bản giới thiệu


22

Trong HTML5 như vậy, không có cách nào để đặt giá trị mặc định của trường ngày thành ngày hôm nay? Như được hiển thị trong các câu trả lời khác, giá trị có thể được đặt bằng JavaScript và đây thường là cách tiếp cận tốt nhất nếu bạn muốn đặt mặc định theo ngày hiện tại cho người dùng khi trang được tải.

HTML5 xác định valueAsDatetài sản cho input type=datecác yếu tố, và sử dụng nó, bạn có thể thiết lập giá trị ban đầu trực tiếp từ một đối tượng được tạo ra ví dụ bằng new Date(). Tuy nhiên, ví dụ IE 10 không biết thuộc tính đó. (Nó cũng thiếu hỗ trợ chính hãng input type=date, nhưng đó là một vấn đề khác.)

Vì vậy, trong thực tế, bạn cần đặt thuộc valuetính và nó phải ở trong ký hiệu tuân thủ ISO 8601. Ngày nay điều này có thể được thực hiện khá dễ dàng, vì chúng ta có thể mong đợi các trình duyệt được sử dụng hiện tại hỗ trợ toISOStringphương thức:

<input type=date id=e>
<script>
document.getElementById('e').value = new Date().toISOString().substring(0, 10);
</script>

6
Hoặc nếu bạn muốn nó tuân thủ Y10K:= new Date().toISOString().split('T')[0];
Blazemonger

1
toISOString trả về ngày và giờ UTC, do đó có thể không hiển thị ngày chính xác cho múi giờ của người dùng. Ví dụ: nếu người dùng là UTC + 0800, thì từ nửa đêm đến 08:00 họ sẽ có được ngày hôm qua.
RobG

18

Nếu bạn đang làm bất cứ điều gì liên quan đến ngày và thời gian trong trình duyệt, bạn muốn sử dụng Moment.js :

moment().format('YYYY-MM-DD');

moment()trả về một đối tượng đại diện cho ngày và thời gian hiện tại. Sau đó, bạn gọi .format()phương thức của nó để có được một chuỗi đại diện theo định dạng đã chỉ định. Trong trường hợp này , YYYY-MM-DD.

Ví dụ đầy đủ:

<input id="today" type="date">
<script>
document.getElementById('today').value = moment().format('YYYY-MM-DD');
</script>

Nếu bạn đã có sẵn khoảnh khắc () hoặc có kế hoạch thực hiện nhiều công việc hẹn hò hơn trong ứng dụng web của mình, thì giải pháp này là không có trí tuệ. Khoảnh khắc giải quyết rất nhiều vấn đề.
secretwep

10

sử dụng khoảnh khắc.js để giải quyết vấn đề này trong 2 dòng, loại đầu vào ngày html5 chỉ chấp nhận "YYYY-MM-DD" định dạng này. Tôi giải quyết vấn đề của mình theo cách này.

var today = moment().format('YYYY-MM-DD');
 $('#datePicker').val(today);

đây là cách đơn giản nhất để giải quyết vấn đề này


8

Javascript

document.getElementById('date-field').value = new Date().toISOString().slice(0, 10);

Jquery

$('#date-field').val(new Date().toISOString().slice(0, 10));

Một lựa chọn khác

Nếu bạn muốn tùy chỉnh ngày, tháng và năm, chỉ cần thực hiện tổng hoặc phụ theo mong muốn của bạn 😎 Đối với tháng được bắt đầu từ mẫu 0, đó là lý do tại sao cần phải tổng 1 với tháng.

function today() {
        let d = new Date();
        let currDate = d.getDate();
        let currMonth = d.getMonth()+1;
        let currYear = d.getFullYear();
        return currYear + "-" + ((currMonth<10) ? '0'+currMonth : currMonth )+ "-" + ((currDate<10) ? '0'+currDate : currDate );
    }

Áp dụng chức năng hôm nay

document.getElementById('date-field').value = today();

$('#date-field').val(today());

7

Rất đơn giản, chỉ cần sử dụng các ngôn ngữ phía máy chủ như PHP, ASP, JAVA hoặc thậm chí bạn có thể sử dụng javascript.

Đây là giải pháp

<?php
  $timezone = "Asia/Colombo";
  date_default_timezone_set($timezone);
  $today = date("Y-m-d");
?>
<html>
  <body>
    <input type="date" value="<?php echo $today; ?>">
  </body>
</html>

7
<input id="datePicker" type="date" />

$(document).ready( function() {
    var now = new Date();
 
    var day = ("0" + now.getDate()).slice(-2);
    var month = ("0" + (now.getMonth() + 1)).slice(-2);

    var today = now.getFullYear()+"-"+(month)+"-"+(day) ;


   $('#datePicker').val(today);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="datePicker" type="date" />


5

nếu bạn cần điền datetime đầu vào, bạn có thể sử dụng:

<input type="datetime-local" name="datetime" 
       value="<?php echo date('Y-m-d').'T'.date('H:i'); ?>" />

5

Đối với NodeJS (Express với các mẫu SWIG):

<input type="date" id="aDate" name="aDate" class="form-control" value="{{ Date.now() | date("Y-m-d") }}" />

5

Các giải pháp đơn giản nhất dường như bỏ qua rằng thời gian UTC sẽ được sử dụng, bao gồm cả những giải pháp được đánh giá cao. Dưới đây là phiên bản sắp xếp hợp lý, ES6, không phải jQuery của một vài câu trả lời hiện có:

const today = (function() {
    const now = new Date();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    return `${now.getFullYear()}-${month}-${day}`;
})();
console.log(today); // as of posting this answer: 2019-01-24

Bạn nên nói rõ thuộc tính nào của phần tử đầu vào để gán nó. valuehay valueAsDate? Có vẻ tốt mặc dù.
ADJenks

4

Đây là những gì tôi đã làm trong mã của mình, tôi vừa thử nghiệm và nó hoạt động tốt, kiểu nhập = "ngày" không hỗ trợ tự động đặt curdate, vì vậy cách tôi sử dụng để khắc phục giới hạn này là sử dụng mã PHP một mã đơn giản như thế này .

<html>
<head></head>
    <body>
        <form ...>
            <?php
                echo "<label for='submission_date'>Data de submissão</label>";
                echo "<input type='date' name='submission_date' min='2012-01-01' value='" . date('Y-m-d') . "' required/>";
            ?>
        </form>
    </body>
</html>

Hy vọng nó giúp!


1
Xin chào và chào mừng bạn đến với SO, Vui lòng thêm thông tin để hỗ trợ mã của bạn và đảm bảo rằng người đặt câu hỏi muốn có giải pháp dựa trên PHP.
Shiva

4

Cả hai câu trả lời hàng đầu đều không chính xác.

Một lớp lót ngắn sử dụng JavaScript thuần túy, chiếm các múi giờ cục bộ và không yêu cầu thêm chức năng nào được xác định:

const element = document.getElementById('date-input');
element.valueAsNumber = Date.now()-(new Date()).getTimezoneOffset()*60000;
<input id='date-input' type='date'>

Điều này nhận được thời gian hiện tại tính bằng mili giây (kể từ epoch) và áp dụng bù thời gian theo mili giây (phút * 60k phút mỗi mili giây).

Bạn có thể đặt ngày bằng cách sử dụng element.valueAsDatenhưng sau đó bạn có thêm một cuộc gọi đến hàm Date()tạo.


4

Đây là điều bạn thực sự cần làm phía máy chủ vì định dạng giờ địa phương của mỗi người dùng khác nhau, chưa kể mỗi trình duyệt hoạt động khác nhau.

Giá trị đầu vào Ngày của Html phải ở định dạng này: yyyy-mm-dd nếu không nó sẽ không hiển thị giá trị.

LỚP ASP, HOẶC VBSCRIPT:

current_year = DatePart("yyyy",date) 
current_month = DatePart("m",date) 
current_day = DatePart("d",date) 

IF current_month < 10 THEN
current_month = "0"&current_month
END IF
IF current_day < 10 THEN
current_day = "0"&current_day
END IF

get_date = current_year&"-"&current_month&"-"&current_day
Response.Write get_date

Đầu ra của ngày hôm nay: 2019-02-08

Sau đó, trong html của bạn: <input type="date" value="<% =get_date %>"

PHP

chỉ sử dụng cái này <input type="date" value="<?= date("Y-m-d"); ?>">


4

Điều này rất đơn giản bằng cách áp dụng mã sau đây, Sử dụng PHP

<input type="date" value="<?= date('Y-m-d', time()); ?>" />

Chức năng ngày sẽ trả về ngày hiện tại, bằng cách lấy ngày trong time().


2

bằng Javascript:

var today = new Date();

document.getElementById("theDate").value = today.getFullYear() + '-' + ('0' + (today.getMonth() + 1)).slice(-2) + '-' + ('0' + today.getDate()).slice(-2);

2
new Date().getFullYear()+"-"+ ((parseInt(new Date().getMonth())+1+100)+"").substring(1)

1
Vui lòng thêm mô tả với câu trả lời của bạn.
bawa g

1

Nếu bạn đang sử dụng ruby, bạn có thể sử dụng giá trị này để đặt giá trị mặc định thành ngày và giờ hôm nay:

<input type="datetime-local" name="time" value="<%= Time.now.strftime('%Y-%m-%dT%H:%M') %>" />

1

Một giải pháp đơn giản:

<input class="set-today" type="date">
<script type="text/javascript">
    window.onload= function() {
        document.querySelector('.set-today').value=(new Date()).toISOString().substr(0,10));
    }
</script>

1
@GeorgeJempty Điều này không xảy ra nếu thời gian hiện tại ở UTC là một ngày khác với ngày hiện tại. Nó sẽ trả về ngày hiện tại trong UTC, không phải theo múi giờ địa phương của bạn.
ADJenks

@adjenks Heh Tôi thấy rằng đó là thời điểm hoàn hảo để tôi kiểm tra, 10 phút cho đến nửa đêm
Dexygen

@adjenks Cuối cùng tôi đánh ra một nửa chục dòng mà tránh được những cạm bẫy UTC và cải thiện một chút về một vài câu trả lời tương tự jQuery / phi ES6 hiện: stackoverflow.com/a/54341296/34806
Dexygen

Câu trả lời có thêm ")" ở cuối dòng và parends bên ngoài xung quanh "Ngày mới ()". Nên là: document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Kirby L. Wallace

0

Vì không có phương pháp mặc định nào để đặt giá trị cho đến ngày hôm nay, tôi sẽ nói rằng điều này nên phụ thuộc vào ứng dụng của nó. Nếu bạn đang tìm cách tối đa hóa mức độ hiển thị của đối tượng của mình với bộ chọn ngày, thì hãy sử dụng tập lệnh phía máy chủ (PHP, ASP, v.v.) để đặt giá trị mặc định.

Tuy nhiên, nếu đó là bảng điều khiển quản trị của CMS và bạn biết rằng người dùng sẽ luôn có JS trên hoặc trang web của bạn đáng tin cậy, thì bạn có thể sử dụng JS một cách an toàn để điền vào giá trị mặc định, theo jlbruno.


0

Tôi đã có cùng một vấn đề và tôi đã sửa nó bằng JS đơn giản. Đầu vào:

<input type="date" name="dateOrder" id="dateOrder"  required="required">

JS

<script language="javascript">
document.getElementById('dateOrder').value = "<?php echo date("Y-m-d"); ?>";
</script>

Quan trọng: tập lệnh JS phải nằm trong dòng mã cuối cùng hoặc sau khi nhập, bởi vì nếu bạn đặt mã này trước, tập lệnh sẽ không tìm thấy đầu vào của bạn.


2
Nếu bạn đang sử dụng PHP, tại sao phải bận tâm với JavaScript ?
Blazemonger

0

Không có phương thức mặc định nào trong chính HTML để chèn ngày hôm nay vào trường đầu vào. Tuy nhiên, giống như bất kỳ trường đầu vào nào khác, nó sẽ chấp nhận một giá trị.

Bạn có thể sử dụng PHP để tìm nạp ngày hôm nay và nhập nó vào trường giá trị của phần tử biểu mẫu.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";

    // Send to the browser the input field with the value set with the date string
    echo "<input type='date' value='$date_string' />";
?>

Trường giá trị chấp nhận định dạng YYYY-MM-DD làm đầu vào một cách đơn giản bằng cách tạo một biến có $date_stringcùng định dạng mà giá trị đầu vào chấp nhận và điền vào năm, tháng và ngày lấy từ ngày hôm nay và voilá! Bạn có một ngày được chọn trước!

Hi vọng điêu nay co ich :)

Biên tập:

Nếu bạn muốn có trường đầu vào được lồng trong HTML chứ không phải PHP, bạn có thể làm như sau.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";
?>
<html>
    <head>...</head>
    <body>
        <form>
            <input type="date" value="<?php print($date_string); ?>" />
        </form>
    </body>
</html>

Tôi nhận ra câu hỏi này đã được hỏi cách đây một thời gian (2 năm trước) nhưng tôi vẫn mất một lúc để tìm câu trả lời chắc chắn trên internet, vì vậy điều này sẽ phục vụ bất cứ ai đang tìm kiếm câu trả lời bất cứ khi nào có thể và hy vọng nó giúp đỡ mọi người rất nhiều :)

Chỉnh sửa khác:

Hầu như quên mất, điều gì đó từng là nỗi đau của hoàng gia đối với tôi trong quá khứ là luôn quên đặt múi giờ mặc định bất cứ khi nào tạo một tập lệnh trong PHP sử dụng hàm date ().

Cú pháp là date_default_timezone_set(...);. Tài liệu có thể được tìm thấy ở đây tại PHP.netdanh sách các múi giờ được hỗ trợ để chèn vào hàm có thể được tìm thấy ở đây . Điều này luôn gây phiền nhiễu vì tôi ở Úc, mọi thứ luôn bị đẩy lùi 10 giờ nếu tôi không cài đặt đúng cách này vì nó mặc định là UTC + 0000 khi tôi cần UTC + 1000, vì vậy hãy thận trọng :)


0

Cảm ơn peter, bây giờ tôi thay đổi mã của tôi.

<input type='date' id='d1' name='d1'>

<script type="text/javascript">
var d1 = new Date();
var y1= d1.getFullYear();
var m1 = d1.getMonth()+1;
if(m1<10)
    m1="0"+m1;
var dt1 = d1.getDate();
if(dt1<10)
dt1 = "0"+dt1;
var d2 = y1+"-"+m1+"-"+dt1;
document.getElementById('d1').value=d2;
</script>

3
Xin vui lòng, xin vui lòng, không sử dụng document.write trong các ứng dụng thực tế - có quá nhiều vấn đề khi sử dụng nó.
Peter Hart

Peter, bạn có thể giải thích những gì thăm dò. bạn đã có ?
Nikhil sHETH

Peter, cũng đề cập đến cách bạn lấy ngày hiện tại làm giá trị mặc định trong loại đầu vào = ngày
Nikhil sHETH

1
Không phải là nó không hoạt động, nhưng nói chung, việc sử dụng document.write là không tốt. Có vô số lý do tại sao lại như vậy, đây là một số ví dụ: stackoverflow.com/questions/802854/ mẹo Nếu tôi hoàn toàn phải làm điều này trong javascript trên máy khách, tôi sẽ sử dụng id trên phần tử và tài liệu. getEuityById để lấy phần tử và thay đổi nó, tương tự như một số câu trả lời khác trên trang này.
Peter Hart

0

Và đối với những người sử dụng ASP VBScript

<%
'Generates date in yyyy-mm-dd format
Function GetFormattedDate(setDate)
strDate = CDate(setDate)
strDay = DatePart("d", strDate)
strMonth = DatePart("m", strDate)
strYear = DatePart("yyyy", strDate)
If strDay < 10 Then
  strDay = "0" & strDay
End If
If strMonth < 10 Then
  strMonth = "0" & strMonth
End If
GetFormattedDate = strYear & "-" & strMonth & "-" & strDay
End Function
%>

Và sau đó trong cơ thể, yếu tố của bạn sẽ trông giống như thế này

<input name="today" type="date" value="<%= GetFormattedDate(now) %>" />

Chúc mừng!


0

Thậm chí sau tất cả những thời gian này, nó có thể giúp đỡ một ai đó. Đây là giải pháp JS đơn giản.

Mã não

  let date = new Date();
  let today = date.toISOString().substr(0, 10);
  //console.log("Today: ", today);//test
  document.getElementById("form-container").innerHTML =
    '<input type="date" name="myDate" value="' + today + '" >';//inject field

HTML

 <form id="form-container"></form>

Giải pháp tương tự hoạt động trong Angular mà không cần bất kỳ thư viện bổ sung nào để chuyển đổi định dạng ngày. Đối với Angular (mã được rút ngắn do mã thành phần phổ biến):

//so in myComponent.ts 
//Import.... @Component...etc...
date: Date = new Date();
today: String; //<- note String
//more const ...
export class MyComponent implements OnInit {
   //constructor, etc.... 
   ngOnInit() {
      this.today = this.date.toISOString().substr(0, 10);
   }
}
//so in component.html 
<input type="date" [(ngModel)]="today"  />

Đây là cách quá cồng kềnh khi chỉ cần sử dụng một giá trị mặc định.
cải cách

Mà một trong hai ví dụ độc lập mà bạn đang cố gắng chỉ ra? Cả 4 dòng mã của nó trong cả hai ví dụ .... Ví dụ đầu tiên là html + js thuần, vì vậy hãy tạo vùng chứa và sao chép mã dán 3 dòng nếu bạn không đếm số bình luận. Tương tự cho ví dụ góc cạnh đó là lý do tôi để lại bình luận. Không chắc ý của bạn là gì ....
StefaDesign
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.