2010-08-16 43 views
30

Tôi muốn thêm bộ chọn ngày gốc vào ứng dụng của tôi, hiện đang sử dụng hệ thống cũ, được cuộn tại nhà. Hỗ trợ đầu vào ngày không phổ biến, tuy nhiên, nhưng nếu tôi có thể trình bày cả hai cách triển khai dựa trên tính tương thích, điều đó sẽ là lý tưởng.Chỉ định đầu ra giá trị của loại đầu vào HTML5 = ngày?

Có cách nào để chỉ định đầu ra của giá trị được đưa ra bởi một trình ghi ngày tháng HTML không? Giá trị mặc định cho opera là yyyy-mm-dd và tôi rất rõ ràng cần dd-MMM-yyyy.

Hiện có cách nào để kiểm soát đầu ra này không?

+0

Không chắc chắn nếu điều này thực sự là những gì bạn muốn, nhưng bạn có thể tìm thấy giá trị trong này: http://flowplayer.org/tools/dateinput/index.html – treeface

+0

Bạn có ý nghĩa gì bởi giá trị đầu ra chính xác. Giá trị * value * hoặc giá trị * được hiển thị *? –

+1

@Pekka: Cả hai, thực sự. –

Trả lời

23

Trường HTML5 date input là cụ thể về định dạng nó sử dụng: RFC 3339 full-date

Có thể thay đổi bộ chọn ngày di sản để sử dụng định dạng yyyy-mm-dd (và cập nhật phía máy chủ mà đọc đó)? Tôi giả sử không, vì vậy bạn có thể thêm một số mã keo Javascript để nghe sự kiện thay đổi trên đầu vào HTML5 và cập nhật trường giá trị ngày bị ẩn để khớp với định dạng của công cụ chọn ngày cũ (chuyển đổi yyyy-mm-dd đến dd-MMM-yyyy).

+43

Điều này làm tôi buồn. –

+8

dd-mmm-yyyy thậm chí không độc lập về miền địa phương (giả sử mmm là "Jan", "Feb", v.v.). Vì vậy, nó khá "buồn" nếu webapp/script của bạn yêu cầu định dạng như vậy thay vì tuân thủ tiêu chuẩn cái không chứa bất kỳ chuỗi được bản địa hóa nào. – ThiefMaster

+9

@ThiefMaster: Người dùng đã mong đợi 03-FEB-2011 cho mỗi lần nhập ngày qua toàn bộ ứng dụng sẽ tiếp tục mong đợi định dạng đó. yyyy-mm-dd không thể đọc được và cũng không được mong đợi đối với công dân Hoa Kỳ (trong đó khách hàng vào thời điểm đó) và định dạng không hoàn toàn cho khả năng sử dụng nếu chỉ cần một tháng và ngày, hoặc một ngày và giờ. Khi quy ước tồn tại, quy ước sẽ vượt qua các nguyên tắc thiết kế khác trong nhiều trường hợp để tối đa hóa khả năng sử dụng, đặc biệt là nơi khách hàng có ít hoạt động. –

15

Trong Google Chrome, điều này gần đây đã thay đổi. Các giá trị được hiển thị cho người dùng hiện được dựa trên ngôn ngữ hệ điều hành. Đọc, vì vậy, input.value, luôn trả về là yyyy-mm-dd bất kể định dạng bản trình bày là gì.

Cách hữu ích hơn theo ý kiến ​​của tôi.

Nguồn:

http://updates.html5rocks.com/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome

0

Định dạng của trường ngày HTML là tiêu chuẩn. Mặc dù không thể thay đổi điều này, bạn có thể dễ dàng chuyển đổi từ một đối tượng ngày sang định dạng bạn đang tìm kiếm khi người dùng của bạn đã bật JavaScript.

// Converts any valid Date string or Date object into the format dd-MMM-yyyy 
function dateTransform(d) { 
    var s = (new Date(d)).toString().split(' '); 
    return [s[2],s[1],s[3]].join('-'); 
} 

Nếu không, bạn sẽ cần phải nộp trong định dạng ISO và thực hiện một giải pháp server-side. Có lẽ trong thời gian, điều này có thể dẫn đến việc sử dụng nhiều định dạng ngày chuẩn ở mọi địa phương.

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