2014-09-19 18 views
8

Trong Safari, iOS8, tập trung vào ngày hoặc thời gian sẽ mở bộ chọn ngày hoặc giờ và cho phép chỉnh sửa nội dung của đầu vào chỉ đọc.Trong Safari của iOS8, đầu vào chỉ đọc được xử lý không chính xác

Khi lấy nét trong đầu vào văn bản, thanh công cụ xuất hiện ở dưới cùng với các nút trước, tiếp theo và Xong, và sẽ không biến mất cho đến khi Xong được nhấn hoặc đầu vào khác trên trang được nhấn.

Khi đầu vào tập trung theo chương trình từ Javascript, không có gì xảy ra, nhưng: nếu trình xử lý sự kiện chạm được thêm vào một phần nào đó của trang, chạm vào bất kỳ nơi nào sẽ hiển thị ngày, bộ chọn thời gian hoặc thanh công cụ, ngay cả khi người nghe trống.

Mẫu mã:

<input id="test1" readonly /> 
<input id="test2" type="date" readonly /> 
<input id="test3" type="time" readonly /> 

<script> 
    document.getElementById('test1').focus(); 
    window.addEventListener('touchstart', function() {}); 
</script> 

Sống dụ: http://jsfiddle.net/cw3hump4/embedded/result/

Bất kỳ ý tưởng hoặc cách giải quyết về cách để tránh điều này?

UPDATE:

Đối với khả năng sử dụng lý do/khả năng tiếp cận tôi cần tập trung quản lý: khai thác vào đầu vào mở ra một hộp thoại, khi hộp thoại được đóng lại, tôi đặt trọng tâm trở lại vào đầu vào. Đầu vào phải là chỉ đọc, để ngăn bàn phím mềm/bộ chọn ngày/bộ chọn thời gian bật lên, nhưng không thể tắt, vì vậy tôi có thể đặt giá trị và tập trung vào nó.

Trả lời

5

Tôi nghĩ đây là lỗi trong Safari iOS8

Đây là giải pháp thay thế với jQuery.

$(function() { 
    $('input[readonly]').on('touchstart', function(ev) { 
    return false; 
    }); 
}); 

EDIT:

thế nào về điều này?

$(function() { 
    $('input[readonly]').on('focus', function(ev) { 
    $(this).trigger('blur'); 
    }); 
}); 
+0

Có 2 vấn đề với điều đó: (1) nó giết trang cuộn nếu chạm bắt đầu từ đầu vào (2) nó không giải quyết được vấn đề nếu đầu vào tập trung từ Javascript (xem http://jsfiddle.net)/cw3hump4/1 /, chạm vào màn hình ở bất kỳ đâu và trình chỉnh sửa ngày xuất hiện) – dioslaska

+0

đã chỉnh sửa câu trả lời. – rintaro

+0

Cảm ơn, nhưng trong kịch bản của tôi, tôi cần quản lý tập trung. Đã cập nhật câu hỏi. Tôi đoán tôi phải sống mà không tập trung cho đến khi lỗi được sửa ... – dioslaska

-2

Hãy thử gói các yếu tố đầu vào trong một yếu tố hình thức, như

<form><input id="test1" readonly /></form> 
<form><input id="test2" type="date" readonly /></form> 
<form><input id="test3" type="time" readonly /></form> 

iOS8 không thích các yếu tố đầu vào thats không được bọc trong một yếu tố hình thức, có vẻ là một lỗi trong iOS8.

+0

Tôi chỉ thử nó, nhưng nó hoạt động giống nhau (trên 8.0.2 và 8.1) – dioslaska

+0

Bạn nên cố gắng tránh sử dụng nhiều trường biểu mẫu trên một trang . – littlevahn

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