Để đặt bàn phím hiển thị trên thiết bị iOS, bạn cần tập trung vào phần tử có thể chỉnh sửa, chẳng hạn như input
hoặc textarea
. Hơn nữa, phần tử phải là có thể nhìn thấy và chức năng .focus()
phải được thực hiện để đáp ứng với tương tác của người dùng, chẳng hạn như nhấp chuột.
Điều này là - chúng tôi KHÔNG muốn phần tử đầu vào hiển thị .. Tôi đã bỏ qua điều này một cách yên tĩnh và cuối cùng đã nhận được kết quả mà tôi đang tìm kiếm.
Đầu tiên, tạo một yếu tố bạn muốn sử dụng để hiển thị bàn phím - trong trường hợp này một nút, và một yếu tố đầu vào ẩn: (Working jsFiddle hoặc Test on a mobile device)
<button id="openKeyboard">Open Keyboard</button>
<input id="hiddenInput" style="visibility: hidden;">
Sau đó sử dụng javascript sau:
document.getElementById('openKeyboard').addEventListener('click', function(){
var inputElement = document.getElementById('hiddenInput');
inputElement.style.visibility = 'visible'; // unhide the input
inputElement.focus(); // focus on it so keyboard pops
inputElement.style.visibility = 'hidden'; // hide it again
});
Ghi chú:
- tôi đã nhận thấy rằng iOS Safari sẽ tự động cuộn và thu phóng đến khu vực của đầu vào để đảm bảo bạn sử dụng đúng chế độ xem chế độ xem và định vị phần tử đầu vào của bạn ở vị trí có liên quan.
- Bạn có thể sử dụng một số CSS trên đầu vào của mình như đặt
opacity
, height
và width
thành 0
. Tuy nhiên, nếu đầu vào của bạn bị ẩn hoàn toàn, thao tác này sẽ không hoạt động trở lại, vì vậy, hãy đảm bảo bạn rời khỏi padding
hoặc border
để có kết quả hiển thị (mặc dù nó không hiển thị do độ mờ đục). Điều này cũng có nghĩa là bạn không nên sử dụng display:none
để ẩn nó, các thành phần ẩn chỉ không được phép tập trung.
- Sử dụng các sự kiện bàn phím thông thường (
keydown
, keypress
, keyup
) trên đầu vào bị ẩn của bạn để truy cập tương tác của người dùng như bình thường. Không có gì đặc biệt ở đây.
Nguồn
2016-03-03 09:52:19
Không thể sử dụng JS để phát hiện xem người dùng có đến từ iPad hay không, sau đó thay thế DIV có thể chỉnh sửa của bạn bằng văn bản? – Pwnna