別ウインドウから、textarea内のカーソル位置に文字を挿入。
お世話になっております。
やりたいことは、以下のような感じです。
2つのウインドウ(ページA、ページB)があります。
ページAには、textareaがあります。
textareaにデータを入力後、
マウスでtextarea内のデータの特定の位置をクリックし、
カーソルを置いておきます。
この状態で、ページAにあるコマンドボタンをクリックすると、
ページBが開きます。
ページBには、いくつかコマンドボタンが表示されていて、
このうち、どれか1つをクリックすると、
ページBが閉じられ、かつ、
ページBで選択したコマンドボタンに設定されている値が、
ページAのtextarea内のカーソル位置に挿入される。
・・・以上のような感じのことをやりたのです。
ページA内のコマンドボタンからページBを開くのは、
windows.open(URL)
で開くことができました。
ページBでコマンドボタンを選択した際、
window.close()
でページBを閉じるところまではできたのですが、
値をページAのtextareaに挿入するところが、うまくいきません。
(↓こんな感じなのかと思うのですが・・・)
window.close();
var str1 = document.getElementById(textareaのid).value;
var str2 = "aaa"; // 挿入したい値
var p = document.getElementById('textareaのid').selectionStart;
document.getElementById(textareaのid).value = str1.substr(0, p) + str2 + str1.substr(p, str1.length);
どなたかご教授願います。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ページAはwindow.openerで参照できますので、
こういう具合でやってみたらいいんじゃないでしょうか。
<script type="text/javascript">
<!--
function hoge(o){
//ページAのtextareaのidを"sample"とする
var sample = window.opener.document.getElementById("sample");
var str1 = sample.value;
var str2 = o.value; //たとえば押されたbuttonのvalue
var p = sample.selectionStart;
sample.value = str1.substr(0, p) + str2 + str1.substr(p, str1.length);
window.close();
}
//-->
</script>
</head>
<body>
<button type="button" value="aaa" onclick="hoge(this);">aaa</button>
<button type="button" value="bbb" onclick="hoge(this);">bbb</button>
</body>
</html>
この回答への補足
あと、textareaで挿入場所を指定する際、
クリックでの位置指定だけでなく、
範囲指定(ドラッグ)して、その範囲に、挿入する値を入れ替えたいのですが。
↓こんな感じでやるのかと思うのですが、うまくいきません。
document.getElementById("osi1_f").focus();
var text=getSelectText();
document.selection.createRange().text = "";
併せてご教授いただければ、大変ありがたいのですが。
よろしくお願いします。
ご回答ありがとうございます。
ご助言のとおり、
window.opener.document.getElementById("sample");
を使えば、別ウインドウに値を渡せることは、わかりました。
ただ、実行した結果は、
挿入したい値が、そのtextareaの最後尾に挿入され、
かつ、
さらに、その後ろに、もう一度、
textarea内のデータが挿入されてしまいました。
現在、対応を検討中です。
まずは、御礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Word(ワード) Google ドキュメントで改ページを挿入する方法 1 2022/05/25 19:22
- ホームページ作成・プログラミング 秀丸に関して教えて下さい。 1 2022/06/30 10:00
- ノートパソコン ページ番号の入れ方について 3 2023/02/16 17:11
- HTML・CSS Windowsのformでtextareaに入力すると改行が反映されません 2 2023/06/01 11:50
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- その他(OS) Mac OSの操作について 2 2022/06/08 09:19
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavascriptでDOM-based XSSの発...
-
onchangeイベントを強制的に発...
-
ひとつのボタンでタイマーを動...
-
javaScriptの変数をJavaの変数...
-
formのfileの値をhiddenでも持...
-
UWSCでブログへ自動投稿したい...
-
innerHTML内では改行は禁止?
-
jQueryで設定したイベントハン...
-
HTMLのテキストボックスへのド...
-
クリックさせたいが、click()が...
-
フォームのNAMEを変数に格納し...
-
ボタンかリンクをクリックする...
-
return trueとreturn falseの用...
-
hiddenのvalueの値を変えたい
-
出発駅A、到着駅Bを選択すると...
-
【jsp/Java】チェックボックス...
-
javascriptで質問です。 displa...
-
<JavaScript>tableタグを入力不...
-
Javascriptでのbuttonのname属...
-
jsで質問です。 displayプロパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
onclickが動作しない
-
formのfileの値をhiddenでも持...
-
JavascriptでDOM-based XSSの発...
-
ボタンかリンクをクリックする...
-
追加ボタンを押した際に ok ボ...
-
クリックさせたいが、click()が...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
VB.NETで<Input>タグ、<text...
-
JQueryでfunctionに引数としてI...
-
innerHTML内では改行は禁止?
-
javascriptで作成されたテーブ...
-
クリックでテーブル内の背景色...
-
ボタンをクリックするとテキス...
-
開いた子ウィンドウにあるボタ...
-
JSのボタンを複数う使うには
-
javascriptでtextareaに文字列...
-
jQueryで設定したイベントハン...
-
Firefoxでwindow.openerが動作...
おすすめ情報