
IEで,テキストエリアの選択範囲を設定する方法
お世話になります。
javascriptでテキストエリアの選択範囲を設定したく、
http://d.hatena.ne.jp/language_and_engineering/2 …
を参考に以下のようなhtmlを試験したのですが、正しく選択範囲が設定されません。
コーディングはShift_JIS、改行はCRLFです。
どこが悪いのでしょうか?
正しく選択範囲が設定されるサンプルがあれば、ご教示いただければありがたいです
よろしくお願いします。
<html>
<textarea id="my_input" cols=50 rows=10>
あいうえおかきこけこ
さしすせそたちつてと
なににねのはひふへほ
</textarea>
<input type="button" onclick="f()" value="選択">
<script language="JavaScript">
function f()
{
var elem = document.getElementById( "my_input" );
setSelectionIE( elem, 5, 15 ); //かきくけこさしすせそ が選択されない
}
// 要素内の文字列を選択状態にする関数
// start, end : 選択したい文字列の開始地点と終了地点。(先頭からの文字数)
function setSelectionIE( elem, start, end )
{
// 終了地点を,末尾から数えた負の文字数に変換
var end_new = - ( elem.value.length - end );
// 範囲生成
var range = elem.createTextRange();
range.moveStart( "character", start ); // 先頭から数えた開始地点
range.moveEnd( "character", end_new ); // 末尾から数えた開始地点
// 選択
range.select();
}
</script>
</html>
No.4ベストアンサー
- 回答日時:
というわけで、マルチブラウザー対応
<textarea id="my_input" cols=50 rows=10>
あいうえおかきこけこ
さしすせそたちつてと
なににねのはひふへほ
</textarea>
<input type="button" onclick="f()" value="選択">
<script type="text/javascript">
function f(){
var elem = document.getElementById( "my_input" );
setSelection(elem,5,15);
}
function setSelection(elem,start,end){
elem.value=elem.value.replace(/\s/g,'');
try{
elem.setSelectionRange(start,end);
}catch(e){
var end_new = - ( elem.value.length - end );
var range = elem.createTextRange();
range.moveStart( "character", start );
range.moveEnd( "character", end_new );
range.select();
}
}
</script>
この回答への補足
ご検討ありがとうございます。
ANo.1の自動改行削除バージョンですね。
しかしこの方法はtextareaの内容が書き換えられます。
当方の質問が説明不足であったかもしれません。
質問の趣旨は「(日本語)の文字位置」で選択したいのではなく、start,endをいわばポインタ的に指定して、textareaの内容を保持したまま、
「 かきくけこ
さしすせそ」
を改行付きで選択したいということで、そのためには
setSelection(elem,5,17);
にすべきでした。
この目的は
http://www.teria.com/~koseki/memo/xbselection/ex …
のget selectionとペアにして、textareaに簡単な自動編集機能を付与することです。
ではまたよろしくお願いします。
いろいろ調べましたが、以下のツールで処理するのが手っ取り早いようです
http://plugins.jquery.com/project/a-tools
No.3
- 回答日時:
訂正
//IE以外
function select(start,end){
var elem = document.getElementById("my_input");
elem.value.replace(/\s/g,'');
elem.setSelectionRange(start,end);
}
No.2
- 回答日時:
IE以外なら、
<script type="text/javascript">
function select(start,end){
var elem = document.getElementById("my_input");
elem.setSelectionRange(start,end);
}
</script>
<textarea id='my_input'>
あいうえおかきこけこ
さしすせそたちつてと
なににねのはひふへほ
</textarea>
<button onclick='select(5,15);'>Select</button>
でOK
No.1
- 回答日時:
<textarea id="my_input" cols=50 rows=10>
あいうえおかきこけこ
さしすせそたちつてと
なににねのはひふへほ
</textarea>
の記述がまずい。(lengthが36です。改行文字も数えられてしまいます。)
<textarea id="my_input" cols=50 rows=10>あいうえおかきこけこさしすせそたちつてとなににねのはひふへほ</textarea>
と書けば全体で30文字でlengthも30になります。
この回答への補足
レスありがありがとうございます。
おっしゃるとおり改行を全部取り去って1行にすれば参考例の<input>同じでうまくいきますが、通常<textarea>で一行にすることはまずありません。
選択範囲取得のほうは、以下のサイトで確認すると
http://www.teria.com/~koseki/memo/xbselection/ex …
改行があっても、改行を2文字と数えてうまく選択範囲が取得されます。
改行を含むtextareaで正しく選択範囲を設定する方法をご教示いただきたく、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- Visual Basic(VBA) A列の最終行に合わせて範囲をコピー 2 2022/09/04 19:10
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
クリックさせたいが、click()が...
-
onClickがinput type="image"だ...
-
インラインフレームから親ウィ...
-
BackSpaceしたい(QNo.2734284の...
-
JavaScriptのfileオブジェクト...
-
vbscriptでIE自動入力(コンボ...
-
onclickが動作しない
-
テキストフィールド未入力の場...
-
javaScriptの変数をJavaの変数...
-
WordpressのCocoonというテーマ...
-
VB.NETで<Input>タグ、<text...
-
コードレビューをお願いします。
-
JavaScriptでこれ出来ますか?
-
JavascriptでDOM-based XSSの発...
-
return trueとreturn falseの用...
-
プルダウンで選択すると、DBの...
-
ボタンを押すとチェックボック...
-
Selectの中身をfor文で入れる
-
ラジオボタンのNullチェック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavaScriptのfileオブジェクト...
-
クリックさせたいが、click()が...
-
javaScriptの変数をJavaの変数...
-
innerHTML内では改行は禁止?
-
VB.NETで<Input>タグ、<text...
-
BackSpaceしたい(QNo.2734284の...
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
ボタンかリンクをクリックする...
-
WordpressのCocoonというテーマ...
-
フォームのNAMEを変数に格納し...
-
JavaScriptでの足し算処理について
-
インラインフレームから親ウィ...
-
タグ実験で
-
リスト追加
-
localStorage
-
javascriptでtextareaに文字列...
-
onClickがinput type="image"だ...
-
ボタンで配列に代入
おすすめ情報