因為 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 的問題