2011-05-16 7 views
10

웹 페이지에서 검색 필드가 있습니다. 사용자가 검색 필드를 지우고 다시 시작할 수 있도록 "지우기"버튼을 추가했습니다. 편의상 검색 필드의 텍스트 상자에 초점을 맞추고 상자에 커서가 나타납니다. 그러나 기본 키보드를 사용하는 Android 기기에는 소프트 키보드가 표시되지 않습니다. iOS와 Opera Mobile에서는 예상대로 작동합니다.필드가 .focus() 인 경우 Android의 소프트 키보드 표시 javascript

사용자가 바로 입력 할 수 있도록 키보드를 Android 브라우저에 표시하는 추가 방법이 있습니까?

function clear_search() { 
    if($('#searchinput').val()) { 
     $('#searchinput').val(''); 
    } 
    $('#searchinput').focus(); 
} 

답변

6

을이 질문은 어쨌든 How to focus an input field on Android browser through javascript or jquery

비슷합니다, 당신은 이미 작동하는 클릭 이벤트를 가지고, 이것은 당신을 분류한다 :

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

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

물론이를 트리거하는 클릭 이벤트가 필요합니다. 그냥 이벤트를하지 않고 집중하지 않는 것 같습니다. 위의 나를 위해 안드로이드 4의 표준 브라우저에서 작동하고 부드러운 키보드를 보여줍니다.

+0

참고로, 이것은 키 프레스 이벤트 (이상하게 보입니다. 나는 말하기, 탭 또는 엔터 키를 사용하여 새 텍스트 필드에 집중할 때 포커스가 맞기 때문에 키보드에 표시 할 것으로 기대하기 때문에 이상하게 보입니다. 텍스트 필드에서 ...) – Michael

+3

이것은 touchstart + touchend 이벤트에서도 작동합니다. Touchstart에 요소를 추가하고 touchend에 초점을 맞출 수 있기 때문에 꽤 멋지다. event.stopPropagation();을 사용하는 것을 기억하십시오. 및 event.preventDefault(); 그렇지 않으면 키보드가 때때로 표시를 시작한 다음 다시 숨 깁니다 (이벤트를 트리거하는 요소 아래에있는 내용에 따라 다름). –

0

click()은 자체적으로 이 충분하지 않습니다.입니다. focus()이 필요하고 click()이 필요합니다. 스크립트가 포함 된 요소에서 onclick()에 의해 트리거되는 경우 무한 루프를 조심하십시오. 아래 스크립트는 Android 58 및 Safari 모바일 602.1 용 Chrome에서 나를 위해 작업하고 있습니다.

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

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
관련 문제