2012-04-17 32 views
63

thể trùng lặp:
HTML5 Type Detection and Plugin InitializationLàm thế nào tôi có thể nói nếu một trình duyệt hỗ trợ <input type = 'date'>

<input type=date> 

có nên tạo một đầu vào với một (không bắt buộc) userpicker được cung cấp bởi user-agent, nhưng nó chưa được hỗ trợ rộng rãi, vì vậy chúng tôi đang sử dụng một jQuery UI Datepicker. Làm thế nào chúng ta có thể cho phép các trình duyệt sử dụng datepicker riêng của họ và chỉ rơi trở lại trên jQuery UI nếu trình duyệt không có một thứ như vậy?

Hiện tại tôi nghĩ Opera chỉ có trình xây dựng ngày tháng, nhưng thử nghiệm cho Opera rõ ràng sẽ là xấu. Có cách nào tính năng này có thể được phát hiện (nếu nó có thể ở tất cả trong một cách cầm tay)?

Cảm ơn

+0

Phát hiện hỗ trợ ngày phức tạp bởi thực tế là các trình duyệt khác nhau hỗ trợ ngày đến các cấp khác nhau. Một số cung cấp bộ chọn ngày lịch tốt. Những người khác chỉ xác nhận nó giống như một ngày tháng. – rjmunro

+1

Chính xác tại sao tôi hỏi câu hỏi. Tôi muốn biết liệu trình duyệt có một trình ghi ngày tháng hay không, không phải nếu trình duyệt xác nhận hiểu đầu vào ngày tháng. Nó không phải là AFAICT một bản sao, và các câu trả lời dưới đây không giúp ích gì. Tôi không bao giờ có vòng để cập nhật hoặc tranh luận. Tôi chỉ đi với '' và luôn sử dụng jquery ui datepicker (cách cũ). – DaedalusFall

+1

Cần lưu ý trên các trình duyệt máy tính để bàn giao diện người dùng nhập ngày thường để lại một số thứ cần thiết. Ngay cả khi họ hỗ trợ nó, bạn có thể không muốn sử dụng nó. Vấn đề này dường như không ảnh hưởng đến các trình duyệt di động. –

Trả lời

101

Phương pháp kiểm tra dưới đây nếu một số loại đầu vào được hỗ trợ bởi hầu hết các trình duyệt:

function checkInput(type) { 
    var input = document.createElement("input"); 
    input.setAttribute("type", type); 
    return input.type == type; 
} 

Nhưng, như simonox đề cập trong các ý kiến, một số trình duyệt (như các trình duyệt cổ Android) giả vờ rằng họ hỗ trợ một số loại (như ngày), nhưng họ không cung cấp giao diện người dùng cho các mục nhập ngày tháng. Vì vậy, simonox cải thiện việc triển khai bằng cách sử dụng mẹo đặt giá trị bất hợp pháp vào trường ngày. Nếu trình duyệt khử trùng đầu vào này, nó cũng có thể cung cấp một datepicker !!!

function checkDateInput() { 
    var input = document.createElement('input'); 
    input.setAttribute('type','date'); 

    var notADateValue = 'not-a-date'; 
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue); 
} 
+8

Không hoạt động trong trình duyệt chứng khoán android, nó trả về true nhưng không có hỗ trợ cho datepicker –

+30

Yêu cầu thuộc tính type không hoạt động trong tất cả các trình duyệt chứng khoán Android. Họ giả vờ htat họ hỗ trợ inputType = date, nhưng họ không cung cấp giao diện người dùng cho các mục nhập ngày tháng. Tính năng phát hiện này làm việc cho tôi: chức năng() { var el = document.createElement ('input'), notADateValue = 'not-a-date'; el.setAttribute ('type', 'date'); el.setAttribute ('value', notADateValue); trả lại! (El.value === notADateValue); } Bí quyết là đặt giá trị bất hợp pháp thành trường ngày. Nếu trình duyệt làm vệ sinh đầu vào này, trình duyệt cũng có thể cung cấp một trình ghi ngày tháng. – simonox

+0

@simonox: một giải pháp rất tốt. Cảm ơn vì điều đó –

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