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();

但是在 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 });

這種場景下就可以生效。經過測試,在 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 });

如果要在 mobile safari 中對 input 進行 focus 操作,就只能在這樣的限制下工作了。

聲明: 本文采用  BY-NC-SA 協議進行授權. 轉載請注明轉自:  javascript 在 mobile safari 上無法對 input 元素 focus 的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM