2012-07-02 7 views
1

Я хочу прослушать onfocus-событие HTML <select> выпадающего списка. Событие onfocus запускается в каждом браузере, кроме встроенного браузера Android (протестированного с использованием Android 1.6 и Android 2.3.3).Событие Onfocus не активировано в HTML <select> box на Android

Я создал следующий код, чтобы продемонстрировать свою проблему:

<html> 
    <body> 
     <form> 
      <select onfocus='$("#info").html("you got the focus!")'> 
       <option>1</option> 
       <option>2</option> 
       <option>3</option> 
      </select> 
      <span id="info">No focus currently...</span> 
     </form>    
    </body> 
</html> 

Вы также можете see this on jsfiddle.

Как уже говорилось, это работает в каждом браузере (протестировано с использованием текущих версий Chrome, Firefox и Internet Explorer), но не в собственном браузере Android. Он также работает над мобильным Safari на iPhone 3GS. Во всяком случае, событие onfocus работает на <input> элементах во всех браузерах, также в автономном браузере Android.

Как я могу сделать событие onfocus работающим на <select> элементами в Android браузере?

ответ

0

This jQuery code делает трюк для меня теперь на Android устройствах

$(document).ready(function(){ 
    $("#select").bind('mouseenter', function(event) { 
     $(this).focus(); 
    }); 
    $("#select").bind('mouseleave', function(event) { 
     $(this).blur(); 
    }); 
});​ 

В основном, mouseenter и mouseleave события запускаемых на Android устройствах. Я нашел это на logging all events, которые запускаются на элементе select.

Хорошо, что я все еще могу использовать событие onfocus в своем элементе select. Недостатком является то, что этот код должен выполняться только на устройствах Android.

0

Если бы несколько подобных проблем с ежевикой ...

Моя работа вокруг была следующая

<select onfocusin='DO SOMETHING' onfocusout="DO SOMETHING"> 

Это должно работать, если оно не почему бы не попробовать

$('#SELECTID').focus(function(){ 
//code to do on focus here 
}); 

РАБОТУ:

http://jsfiddle.net/esbYy/4/

Это также работает: http://jsfiddle.net/esbYy/6/

Его код JQuery в вашей в центре внимания causeing вопросы.

Надеется, что это помогает

+0

[Я пробовал с помощью onfocusin] (http://jsfiddle.net/esbYy/1/), но это не сработало. [Также использование jQuery] (http://jsfiddle.net/esbYy/3/) для события onfocus не работает в браузере Android. – Uooo

+0

По внешнему виду, из-за того, что у пользователя andorids пользовательский способ отображения выбранных объектов, я могу порекомендовать только то, что я могу порекомендовать, чтобы попробовать следующее: onblur, onfocusin, onfocusout, onchange и посмотреть, что они работают, и создать свой код вокруг него, поскольку я не могу показаться найти работу вокруг надежды, я помог хотя – LmC

+0

Решил увидеть мое обновление – LmC

3

Ответ w4rumy работал отлично для меня, спасибо. Но чтобы противостоять «недостатку» w4rumy с его кодом, я немного улучшил его.

Чтобы проверить устройство, просто сделать:

var isAndroid = navigator.userAgent.toLowerCase().indexOf("android"); 

    if (isAndroid > -1) { 
     alert("Android!"); 
     $("select").bind('mouseenter', function (event) { 
      $(this).focus(); 
     }); 
     $("select").bind('mouseleave', function (event) { 
      $(this).blur(); 
     }); 
    } 
    else { 
     alert("iPhone!"); 
    }