jquery focus() 手机端无效
因为 onmouseup event 造成的选取失效,
只要加上以下设定即可:
$("#obj_id").mouseup(function(e){
e.preventDefault();
});
受mouseup影响。。可以参考这样处理:HTML code<input type="text" value="value" onfocus="this.focused=true;this.select();" onmouseup="if(this.focused){this.focused=false;return false;}"/>
/*
以下为转载:
*/
在一般的正常浏览器上,可以用 javascript 来 focus 到一个输入框上:
1 var elem = document.getElementById(‘inputElementId’);
2 elem.focus();
2 elem.focus();
但是在 iOS 的 mobile safari 上,这样的代码不起作用。在 stackoverflow 上也有不少人提问,比如这篇 Programmatically selecting text in an input field on iOS devices (mobile Safari) 。但帖子里的方法都没有起作用。
经过一些实验,目前的结论是:
只有在监听了用户出发的事件的函数中执行 focus 才有用。
比如说这样:
1 var button = document.getElementById(‘btn’);
2 var inputElem = document.getElemntById(‘input-elem’);
3 button.addEventListener(‘click’, function(ev){
4 inputElem.focus();
5 });
2 var inputElem = document.getElemntById(‘input-elem’);
3 button.addEventListener(‘click’, function(ev){
4 inputElem.focus();
5 });
这种场景下就可以生效。经过测试,在 iOS 和 Andriod 的默认浏览器上测试都一样,根据上面帖子里的说法,应该是 webkit 的 bug(或者 feature?)。根据挖出来的老帖,似乎在 S60 的系统中很久以前这个问题就一直存在了。
甚至这样的代码也可以工作:用了 jQuery 中的自定义事件
1 $.subscribe(‘testevent’,function(ev){
2 $(‘#test’).focus();
3 });
4 $(‘#btn’).click(function(ev){
5 $.publish(‘testevent’)
6 });
2 $(‘#test’).focus();
3 });
4 $(‘#btn’).click(function(ev){
5 $.publish(‘testevent’)
6 });
如果要在 mobile safari 中对 input 进行 focus 操作,就只能在这样的限制下工作了。
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: javascript 在 mobile safari 上无法对 input 元素 focus 的问题