2011-09-06 13 views
33

ユーザがテキストエリアをクリックしたときに、テキストエリア内のすべてのテキストを選択したいとします。私はonclick="this.focus()"を試しましたが、これは何もしませんでした。私はonclick="this.highlight()"を試しましたが、これによりエラーが発生しました。私は何をすべきか?テキストエリア内のすべてのテキストをハイライト表示

答えて

41

これは、ユーザーがクリックした場所にキャレットを置くのに便利なデフォルトの動作を妨げるため、一般的には推奨されています。つまり、ほとんどのブラウザの解決策はonclick="this.select()"です。

[更新日:2014年2月:Chromeの最近のバージョンではになりました。 focus()方法は、テキストエリアにクリックするのと同じであるとして、jQuery - select all text from a textarea

+9

のonclick = "; this.select()this.focusを()" ですChromeでもうまく動作します –

+0

@ mars-o:そうです。私はChromeがその動作を変更したのか、それともいつも間違っていたのだろうかと思います。 –

+2

Chrome 28では、 'onclick =" this.select() "で十分です。 –

4

onclick="this.focus()"が冗長である(それは、テキストの末尾にカーソルを置き):この問題の回避策や一般的な背景については、次の質問を参照してください。

highlight()はもちろん、他の場所で作成した場合を除き、関数ではありません。

結論:あなたは.focusを(使用する必要がthis.select()

10
<script type="text/javascript"> 
function SelectAll(id) 
{ 
    document.getElementById(id).focus(); 
    document.getElementById(id).select(); 
} 
</script> 

Textarea:<br> 
<textarea rows="3" id="txtarea" onClick="SelectAll('txtarea');" style="width:200px" >This text you can select all by clicking here </textarea> 

を私はこのコードhere

+1

document.getElementById(id)を省略することができます。単に 'this'をパラメータとして渡すだけです:' function SelectAll(el){el.focus(); el.select(); }; ' –

20
onclick="this.focus();this.select()" readonly="readonly" 
+0

シンプルで素敵な、Chromeで動作します – jazzcat

関連する問題