モバイルSafariを実行しているiPhone、iPadなどのiOSデバイスで入力フィールドのテキストをプログラムでどのように選択しますか?
通常.select()
、<input ... />
要素で関数を呼び出すだけで十分ですが、これはそれらのデバイスでは機能しません。カーソルは既存のエントリの最後に置かれ、選択は行われません。
モバイルSafariを実行しているiPhone、iPadなどのiOSデバイスで入力フィールドのテキストをプログラムでどのように選択しますか?
通常.select()
、<input ... />
要素で関数を呼び出すだけで十分ですが、これはそれらのデバイスでは機能しません。カーソルは既存のエントリの最後に置かれ、選択は行われません。
回答:
input.setSelectionRange(0, 9999);
.focus()
を呼び出す前に入力をトリガーした場合にのみ機能しましたinput.setSelectionRange
。focus
入力でイベントをリッスンしている場合は、無限ループを考慮することを忘れないでください。
readonly
属性が設定されている場合、これはテキストエリアでは機能しません。
このスレッドでは何も機能しませんでした。iPadで機能するものは次のとおりです。
// t is the input field
setTimeout(function() {
t.setSelectionRange(0, 9999);
}, 1);
ネガティブなことを証明するのは難しいですが、私の調査によると、これはMobileSafariのバグです。
focus()は多かれ少なかれ機能することに注意してください。ただし、成功するには複数のタップが必要になる場合があります。問題のフィールドをユーザーがタップしたことに応答しようとしている場合は、タップ自体がフィールドを提供するため、必要ありません。フォーカス。残念ながら、select()はMobileSafariでは機能しません。
あなたの最善の策は、Appleのバグレポートかもしれません。
このフィドルを参照してください:(入力ボックスにテキストを入力し、[テキストを選択]をクリックします)
iPod(5th gen iOS6.0.1)の入力ボックスでテキストを選択し、キーボードを開いて、[切り取り/コピー/提案...]メニューを表示しています。
プレーンJavaScriptを使用します。jQueryでこれを試しませんでした
document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999
999という数字は単なるサンプルであることに注意してください。これらの数字は、選択する文字数に設定する必要があります。
更新:
最後の2つについては、input
要素でクリックイベントをトリガーして実験することができます
更新:(07-10-2013)
更新:(14-11-2013)
.selectionStart
と.selectionEnd
は機能します。更新:(15-01-2015)
<input/>
、iPadは私がjsfiddleの「CSS」ペイン(入力したものはすべて見えない)をタップしていると思っていたことがわかりました。タップを正しい方向に向けると、<input/>
iOS-7.0.3では「テキストの選択」ボタンが完全に機能します:-)。
申し訳ありませんが、以前の投稿では、Javascriptで回答が必要であることを示唆するJavascriptに気づきませんでした。
javascriptを使用してUIWebViewで必要なものを取得するために、2つの重要な情報をまとめて機能させることができました。モバイルブラウザについてはよくわかりません。
element.setSelectionRange(0,9999);
私たちが望むことをします
mouseUpイベントが選択を元に戻しています
したがって(プロトタイプを使用):
input.observe( 'focus'、function(){ this.setSelectionRange(0、9999); }); input.observe( 'mouseup'、function(event){ event.stop(); });
トリックを行います。
マット
$("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
focusin
には、フォーカスの代わりにiOS 7
フォーカスが機能するように見えますが、ネイティブイベントから直接呼び出された場合のみです。SetTimeoutなどを使用してフォーカスを呼び出すと、キーボードが呼び出されません。iOSキーボードの制御は非常に貧弱です。それは良い状況ではありません。
Android 2.2に付属のWebkitでは、次のようなものが機能しています。
function trySelect(el) {
setTimeout(function() {
try {
el.select();
} catch (e) {
}
}, 0);
}
Chromium Issue32865を参照してください。
私はこの解決策を探していましたが、あなたのすべての回答は、私のために別のワームの缶を開くのに役立ちました。
クライアントは、ユーザーができるようにしたかっクリックし、すべてを、そしてまたユーザーみよう]タブを'とiPadですべてを選択する(外部キーボードで。私が知っている、狂いました...)
この問題に対する私の解決策は、イベントを再配置することでした。最初にフォーカス、次にクリック、次にタッチスタート。
$('#myFUBARid').on('focus click touchstart', function(e){
$(this).get(0).setSelectionRange(0,9999);
//$(this).css("color", "blue");
e.preventDefault();
});
あなたが何度も私を助けてくれたので、これが誰かを助けることを願っています。
HTML5準拠のブラウザを使用placeholder="xxx"
している場合は、input
タグで使用できます。それでうまくいくはずです。