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 的問題
相關文章
相關標籤/搜索