2012-01-13 17 views
8

Tôi đã thử $('#field').focus() và mọi phương thức khác được tìm thấy trên internet. Không có gì hiệu quả. Tôi có một html đơn giản tái tạo vấn đề.Cách lấy nét trường nhập trên trình duyệt Android thông qua javascript hoặc jquery

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#field').focus(); 
      }); 
    </script> 
</head> 
<body> 
    <input type="text" id="field" name="field"/> 
</body> 
</html> 

Xin vui lòng trợ giúp!

+0

Không có lý do nào không hoạt động, trừ khi bạn đang sử dụng jQuery Mobile. jQuery Mobile thay đổi vòng đời DOM từ những gì bạn thường mong đợi. –

+0

Tôi không sử dụng jQuery Mobile, chỉ cần jQuery đơn giản. Xem ví dụ. – Ionut

+0

Nó chắc chắn có thể được thực hiện, tôi nhìn thấy nó trên trang tìm kiếm của Google, khi bạn nhấn mũi tên trên các đề xuất. Nhưng họ đã giảm thiểu số lượng js của họ, tôi không thể hiểu nó được thực hiện như thế nào. – Ionut

Trả lời

3

Thực tế, chức năng javascript chung "tiêu điểm" bị hủy kích hoạt trong trình duyệt Android. Do đó, chức năng lấy nét jQuery bị ngừng hoạt động vì nó đang sử dụng ở trên.

+6

Bạn có thể liên kết nguồn thông tin về điều này hoặc giải pháp thay thế không? –

+1

https://gist.github.com/pamelafox/3580510 – jantimon

1

nếu bạn liên kết nó với một sự kiện nhấp chuột khác, sự kiện đó sẽ hoạt động. Điều này phù hợp với tôi:

$(document).ready(function() 
    { 

     $('#field').click(function(e){ $(this).focus(); }); 

      $('body').click(function(e) 
      { 
       $('#field').trigger('click'); 
      }) 
    }) 

Sẽ bật lên bàn phím phần mềm. trigger() sẽ kích hoạt bất kỳ sự kiện nào bạn đưa ra. Trong trường hợp này, hành vi mặc định khi nhấp vào trường == tap == focus == win! Lưu ý: cuộc gọi này bị ràng buộc với một sự kiện nhấp chuột khác đang diễn ra.

+0

Tôi không thể làm việc này trên Android 2.2 – Zymotik

+0

Tôi không thể làm việc này trên Android 4.1 ... –

0

click() hoặc focus() một mình là không đủ. Bạn cần phải focus() rồi click(). Cẩn thận với các vòng lặp vô tận nếu kịch bản của bạn được kích hoạt bởi một onclick() trên một phần tử có chứa. Kịch bản bên dưới đang hoạt động với tôi trên Chrome dành cho Android 58 và Safari di động 602.1. Bàn phím mềm xuất hiện độc đáo.

var target = document.getElementsByTagName("input")[0]; 

if (event.target != target) { 
    target.focus(); 
    target.click(); 
}