我想听一下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>
元素上运行?
答案 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设备会触发mouseenter
和mouseleave
个事件。我通过logging all events在select
元素上触发了这一点。
好消息是,我仍然可以在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/6/
它是焦点内的jQuery代码导致问题。
希望这有帮助