[ javascript ] javascriptで子ウィンドウのリンクをクリックしたときに、親へ値を渡しています。 onclick=”javascript: oldval=親フォーム.value; opener.親フォーム.値


これだと親フォームに入力した値の一番下に値が追加されるのですが、これを親フォームの任意の場所(カーソルの場所)に挿入するにはどうしたらいいでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/08/30 12:32:02
  • 終了:--

回答(4件)

id:andi No.1

andi回答回数448ベストアンサー獲得回数02005/08/30 12:40:25

ポイント45pt

カーソル位置に値を挿入するのは意外に難しいです。


参考URL先のサイトでは、

1.onmouseup/onkeyup時にカーソル位置を取得

2.「文字挿入」ボタンonclick時に1で取得したカーソル位置に文字を挿入

しています。


id:peppon

ありがとうございます。

IE以外は無理でしょうか。

2005/08/30 13:05:54
id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272005/08/30 13:15:02

ポイント10pt

ソースを参考に


まず、親フォームと特定のフォームに名前を付けます

<FORM name=”form1”> ← 名前

項目データ<INPUT NAME=”inp1”> ← 名前

地域データ<INPUT NAME=”inp2”> ← 名前

</form>


子フォームからは


opener.form1.inp1.value=’項目’

opener.form1.inp2.value=’地域’

のようにしてデータを挿入してやればOKです


フォームのカーソル位置を検出するなら、OnFocusイベントでどのフォームがフォーカスを得たか保存しておくと良いです

onFocus=”JavaScript:document.form1.keep.value=1”

<INPUT TYPE=”HIDDEN” name=”keep”> ←ココに退避


var oldval1,oldval2;

function set_value(i,j) {

if(i==0)i=opener.form1.keep.value;

//フォーカスの値からどちらに入力するか決定

if(i==1){

oldval1=opener.form1.inp1.value;

//古い値の退避

opener.form1.inp1.value=j;

//値の入力

}

else if(i==2){

oldval2=opener.form1.inp2.value;

opener.form1.inp2.value=j;

}

}


一つ目のURLが親、もう一つが子フォームです、ソースを参考にして下さい

id:peppon

フォーム(textareaやtext)のカーソル位置に挿入したいのですが、確かめてないのですが上記でカーソル位置は取得できますか? サンプルソースではフォームの位置のみような気がします。

2005/08/30 13:27:47
id:jouno No.3

jouno回答回数280ベストアンサー獲得回数02005/08/30 15:57:34

ポイント45pt

http://dobon.net/vb/dotnet/control/tbselectedtext.html

TextBox(またはRichTextBox)で選択されている文字列の取得と設定: .NET Tips: C#, VB.NET, Visual Studio

mozillaでのやりかたです。

<script language=javascript>

function ins(str){

text=document.forms[0].txt1;

n=text.selectionStart;

before=text.value.substring(0,n);

after=text.value.substring(n,text.value.length);

document.forms[0].txt1.value= before + str +after;

}

</script>

<form>

カーソル位置に文字を挿入できます

<p>

<input type=text name=txt1 size=60 onmouseup=pos(e) onkeyup=pos(e) value=”hello”>


<input type=button onclick=ins(”文字”) value=文字挿入>

</form>

id:peppon

ありがとうございます。

2005/08/30 18:32:53
id:dungeon-master No.4

dungeon-master回答回数571ベストアンサー獲得回数402005/08/30 16:44:11

ポイント50pt

はてなダイアリーの日記を書くを開いてみてください。

この入力フォームには、TEXTAREAのカーソル位置もしくは選択範囲にタグを追加するためのボタンが用意されています。

同じウインドウでやっていますが、ボタンを子ウインドウにしてみれば、やりたいことの方向性は同じと思われます。

右クリックからソースの表示でJavascript部分を見ることができます。

set_range(),get_range() といった関数が定義されていますが、そのあたりがキーポイントになります。

id:peppon

ありがとうございます。

2005/08/30 18:33:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません