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 到一个输入框上:javascript

1 var elem = document.getElementById(‘inputElementId’);
2 elem.focus();

可是在 iOS 的 mobile safari 上,这样的代码不起做用。在 stackoverflow 上也有很多人提问,好比这篇 Programmatically selecting text in an input field on iOS devices (mobile Safari)  。但帖子里的方法都没有起做用。html

通过一些实验,目前的结论是:java

只有在监听了用户出发的事件的函数中执行 focus 才有用。android

好比说这样:ios

1 var button = document.getElementById(‘btn’);
2 var inputElem = document.getElemntById(‘input-elem’);
3 button.addEventListener(‘click’, function(ev){
4     inputElem.focus();
5 });

这种场景下就能够生效。通过测试,在 iOS 和 Andriod 的默认浏览器上测试都同样,根据上面帖子里的说法,应该是 webkit 的 bug(或者 feature?)。根据挖出来的老帖,彷佛在 S60 的系统中好久之前这个问题就一直存在了。web

甚至这样的代码也能够工做:用了 jQuery 中的自定义事件浏览器

1 $.subscribe(‘testevent’,function(ev){
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 的问题
相关文章
相关标签/搜索