人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[ JavaScript ] IE の Range オブジェクトについての質問です。

テキストボックスからフォーカスが外れた際のイベント(jQueryの'focusout'イベントを使ってます)で、選択されていた部分の文字列を取得するという処理をしたいのですが、どうしてもうまく行きません。
以下のJavaScriptのソースコード中、try区の2行目でエラーが発生し、「引数が無効です」と言われてしまうのですが、どうしても原因が特定できず困っています。

どなたか、原因のわかる方のお知恵をお借りできたらと思います。

ソースコードを掲載したら、質問が長すぎると言われてしまったので、以下に別途掲載しました。
http://d.hatena.ne.jp/norisuke3/20110208/1297129434

よろしくお願いします。

●質問者: norisuke3
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:IE JavaScript jQuery TRY イベント
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●60ポイント

とりあえずこれで動いたという回答です。

目的は focusout時に選択した文字列を取得 でしょうか。

IEだけで動けばいいのですか?

<html>
 <haed>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
 <script type="text/javascript">
jQuery(document).ready(function($){
 var test1 = function(e){
 var range = document.selection.createRange();
 //var range2 = document.body.createTextRange();
 var range2 = range.duplicate();
 var res = {};
 try{
 //range2.moveToElementText(this);
 range2.setEndPoint('EndToEnd', range);
 } catch(e) {
 alert(e.message);
 }
 res.start = range2.text.length - range.text.length;
 res.end = res.start + range.text.length;
 res.text = range.text.substring(res.start, res.end);
 
 alert(range2.text);
 };
 
 $("#my-input, textarea")
 .bind("focusout", test1);
});
</script>
 </haed>
 <body>
 <input id="my-input" type="text" name="foo" value="test" />
 <br>
 <textarea>aaaa
bbb
ccc
</textarea>
 </body>
</html>

もしくは、

(Vista, IE8, Firefox3.6.13で動作確認)

<html>
 <haed>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
 <script type="text/javascript">
$(function(){
 $("#my-input, textarea").bind("focusout", function(e){ //select
 var isMSIE = /*@cc_on!@*/0;
 if (!isMSIE) {
 alert(this.value.slice(this.selectionStart, this.selectionEnd));
 } else {
 var range = document.selection.createRange();
 alert(range.text);
 }
 });
});
</script>
 </haed>
 <body>
 <input id="my-input" type="text" name="foo" value="test" />
 <br>
 <textarea>aaaa
bbb
ccc
</textarea>
 </body>
</html>

参考:

textareaの選択範囲を取得し、前後に文字列を挿入する - Archiva

◎質問者からの返答

おお!!ありがとうございます!!

早速試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ