TEXTAREAに文字挿入のプログラムが解読できません。



0   名前: ASH : 2006/08/22(火) 17:43  ID:xrby8HTg
プログラム初心者です。よろしくお願い致します。

既存のソースを元にテキストエリアへの文字挿入の
プログラムを書くことになったのですが、
既存ソースの解読ができなくて困っています。

既存のソースは、
フレーム1の文字をクリックすると、フレーム2のテキストエリアに挿入するプログラムです。
フレーム1で改行有・無しのチェックボックスがあり、有を選択すると、
テキストエリアで改行するようにしています。

このフレーム2の処理が解読できません。何をしようとしているのか、
分かる方がいらっしゃいましたら、教授願います。

特に、function pos の最後の行の*$/は、いろいろ検索してみましたが、
分かりませんでした。

よろしくお願い致します。


---フレーム1---
// 文字クリック時
function selectWord(index){
with(フレーム2){
 strTemp = body.value; //テキストエリア
if (strTemp.length == 0 || 改行有りにチェックがあったら){
フレーム2.ins(wordList1[index],"");
}else{
  フレーム2.ins("\r\n"+wordList1[index],"");


---フレーム2---
var n=0,s=0,elem=null
function pos(e){
elem=e
var sel=document.selection.createRange()
var r=elem.createTextRange()
r.moveToPoint(sel.offsetLeft,sel.offsetTop)
r.moveEnd("character",sel.text.length)
s=r.text.replace(/\r/g,"").length
r.moveEnd("textedit")
n=r.text.replace(/\r/g,"").length+(elem.value.match(/(\r\n)*$/),RegExp.lastMatch.length/2)
}
function ins(a,b){
if(!elem)return
var r=elem.createTextRange()
r.collapse()
r.moveStart("character",elem.value.replace(/\r/g,"").length-n)
r.moveEnd("character",s)
r.text=a+r.text+b
r.collapse(false)
r.select()
s=0
pos(elem)
}

//文字を挿入するテキストエリア
<textarea name=body rows=30 cols=66 wrap=off style="ime-mode:active;" onfocus=pos(this) onmouseup=pos(this) onkeyup=pos(this)><%= bodyText %></textarea>

1   名前: ラブーフ : 2006/08/22(火) 17:43  ID:mGMjLPPf
こんにちは。

>特に、function pos の最後の行の*$/は、いろいろ検索してみましたが、分かりませんでした。

これは、正規表現です。検索すれば、いくらでも出てきますが(http://www2.famille.ne.jp/~akio1998/l_grep.html)、
自分の場合は、大昔に http://www.sixnine.net/regexp/ で勉強しました。

>既存のソースを元にテキストエリアへの文字挿入のプログラムを書くことになったのですが、

お仕事かなんかでされるのであれば、プログラム言語を問わず、正規表現は無視できない概念なので、
良い機会と思って、勉強されるといいと思いますよ。

ちなみに、フレーム2のスクリプトは、完全にIE向けですね。この場合は、それでも良いのでしょうけど。
「IE caret position」などでググってみると、この手のスクリプトはいくらでも出てきますよ。
IE限定でいえば、range.getBookmark()なんていうメソッドもありますしね。

2   名前: COP : 2006/08/22(火) 17:43  ID:zYF3YNuE
マルチポスト
http://otd8.jbbs.livedoor.jp/javascript/bbs_thread

3   名前: ASH : 2006/08/22(火) 17:43  ID:xrby8HTg
申し訳ありませんでした。
マルチポストという言葉を始めて知りました。
マナー違反でした。
以後気をつけます。

一覧へ戻る