在Android </select>上的HTML <select>框中未触发Onfocus事件

时间:2012-07-02 07:51:00

标签: javascript jquery html javascript-events android-browser

我想听一下HTML <select>下拉框的onfocus事件。除了原生Android浏览器(使用Android 1.6和Android 2.3.3测试)之外,每个浏览器都会触发onfocus事件。

我创建了以下代码来演示我的问题:

<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浏览器。它还在iPhone 3GS上开发移动Safari。无论如何,onfocus事件适用于所有浏览器上的<input>元素,也适用于Android本机浏览器。

如何让onfocus事件在Android浏览器中的<select>元素上运行?

3 个答案:

答案 0 :(得分: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!");
    }

答案 1 :(得分:1)

This jQuery code现在在Android设备上为我做了诀窍

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

基本上,Android设备会触发mouseentermouseleave个事件。我通过logging all eventsselect元素上触发了这一点。

好消息是,我仍然可以在onfocus元素中使用select事件。缺点是此代码只能在Android设备上执行。

答案 2 :(得分:0)

与黑莓有一些相似的问题...

我的工作是以下

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

如果它不是为什么不试试

那应该有用
$('#SELECTID').focus(function(){
//code to do on focus here
});

WORKING:

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

这也有效: http://jsfiddle.net/esbYy/6/

它是焦点内的jQuery代码导致问题。

希望这有帮助