2015-05-06 19 views
7

Tôi đã bao gồm một điều hiển thị khi bạn áp dụng tiêu điểm cho phần tử, nó đặt trọng tâm vào phần 'ngày' của đầu vào, nhưng tôi có thể ' t tìm thấy bất kỳ tài liệu nào về cách DOM hiển thị và xác định từng phần của ngày.tháng hoặc năm tháng đầu vào html5 [type = "date"]

Làm cách nào tôi có thể tập trung lập trình các phần tháng/năm của phần tử input[type="date"] và có bất kỳ tài liệu nào về cách loại yếu tố này được hiển thị trong DOM không?

https://jsfiddle.net/uytdhqax/

<input id="dob" type="date" /> 
document.getElementById('dob').focus() 
+0

Tôi đoán đó là điều bên trình duyệt .. Bạn có thể tạo 3 đầu vào và tập trung chúng liên tục sau khi nhập ngày/tháng/năm –

+0

Đây không phải là một tùy chọn. Tôi đang sử dụng AngularJS cùng với một datepicker UI-Bootstrap. Câu hỏi của tôi rất trực tiếp và tôi không mở ra bất kỳ giải pháp nào khác: Làm cách nào tôi có thể tập trung vào các phần tháng/năm của phần tử đầu vào [type = "date"] và có bất kỳ tài liệu nào về cách phần tử này được hiển thị trong dom? – trickpatty

+1

Bạn có thể đọc thêm tại đây - tùy thuộc vào vị trí của máy tính - http://stackoverflow.com/questions/7372038/is-there-any-way-to-change-input-type-date-format –

Trả lời

4

này là không thể thực hiện trong bất kỳ hiện tại của phần tử input[type=date] như xa như tôi biết. Hơn nữa, các trình duyệt khác nhau triển khai phần tử này theo nhiều cách khác nhau, do đó không có tài liệu triển khai độc lập.

Người ta phải hỏi tại sao bạn lại muốn bắt chước hành vi này. Thay đổi giá trị năm một mình sẽ không cung cấp cho phần tử một giá trị trừ khi ngày và tháng cũng được đặt. Trong Chrome, ít nhất, nếu bạn có một phần tử input[type=date], bạn sẽ được hiển thị một phần tử có chứa văn bản giữ chỗ dd/mm/yyyy. Nếu bạn chọn phần yyyy theo cách thủ công và thay đổi điều này thành 2015, ví dụ: văn bản của đầu vào giờ sẽ đọc dd/mm/2015, nhưng value của nó sẽ là "" (một chuỗi trống). Trừ khi bạn chỉnh sửa thủ công các phần ngày và tháng, việc tập trung vào năm sẽ không đạt được bất kỳ điều gì khác ngoài sự nhầm lẫn với người dùng.

+0

cảm ơn phản hồi. tại sao tôi đang cố gắng thực hiện điều này: Chrome dường như thực hiện trọng tâm của riêng nó trên từng phần của ngày khi bạn nhấp vào nó. Trên thực tế, bạn có thể nhấp vào năm trong chrome và chỉ nhập năm mà không có bất kỳ phần nào khác của ngày được nhập. Tôi không quan tâm đến việc xác thực, tôi có quyền kiểm soát đó. Trình mở khóa date UI-Bootstrap góc mở ra cửa sổ bật lên và lấy tiêu điểm khỏi đầu vào ngày, tôi đã cố gắng lấy nét lại phần của ngày tháng được nhấp vào bằng cách sử dụng event.target. một tùy chọn khác sẽ là cố gắng và ngăn chặn tiêu điểm rời khỏi datepicker – trickpatty

+0

@PatrickLawler có, nhưng nếu bạn chỉ thay đổi phần 'yyyy' và để các phần' dd' và 'mm' như chúng bạn sẽ không thể đọc năm nào người dùng đã nhập khi 'giá trị' của phần tử không được tính cho đến khi tất cả các phần được điền. –

+0

Tôi hiểu, đó là một điểm tốt. Tôi tự hỏi giá trị của nó trông như thế nào khi sử dụng mô hình ng của Angular – trickpatty

2

Câu trả lời ngắn: không được hỗ trợ.

Nếu bạn cố gắng để thiết lập lựa chọn (tập trung) sử dụng

var el = document.getElementById('dob'); 
var r = document.createRange(); 
el.setSelectionRange(r); 

bạn sẽ nhận được lỗi:

DOMException: Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('date') does not support selection.

Cũng chỉ documentation I found về loại ngày đầu vào nói "Không được hỗ trợ", vì vậy tôi nghĩ rằng không có tài liệu như vậy. Hiện tại, dường như chỉ có Chrome triển khai loại đầu vào này.

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