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

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

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

●質問者: peppon
●カテゴリ:ウェブ制作
✍キーワード:JavaScript ウィンドウ カーソル クリック リンク
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● andi
●45ポイント

http://mugi.cc/js/

JavaScript

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


参考URL先のサイトでは、

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

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

しています。


http://mugi.cc/js/000603.htm

◎質問者からの返答

ありがとうございます。

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


2 ● aki73ix
●10ポイント

http://nifberry.727.net/test/hatena141.htm

ソースを参考に


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

<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が親、もう一つが子フォームです、ソースを参考にして下さい

http://nifberry.727.net/test/hatena141a.htm

◎質問者からの返答

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


3 ● jouno
●45ポイント

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>

◎質問者からの返答

ありがとうございます。


4 ● dungeon-master
●50ポイント

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

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

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

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

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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



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