• ベストアンサー

javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。

javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。 別窓ページにてtest.cgiを呼び出し、そのCGIに値を渡したいのですが、 一応値はテキスト形式で渡せるのですが、テキストエリアで入力したものの 改行コードが消えてしまいます。何か良い方法があれば、教えて下さい。 <FORM name="test" ACTION="javascript:test_window_open('/cgi-bin/test.cgi?bikou='+document.test.bikou.value);"> : : <TEXTAREA rows="8" cols="50" name="bikou"></TEXTAREA>

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

恐らくCGIの結果を、window.open でスタイル指定したウィンドウに表示したいのでしょうね。その際のフォームデータの渡し方で困っているのだと思います。 No.1さんのように escape 関数を使うのも手ですが、escape はブラウザによっては日本語を Unicode にしてしまうので、CGIスクリプトが Unicode に対応していなければ文字化けしてしまいます。 このような場合は、まず window.open で別窓を作り、そのウィンドウ宛にフォームを送信する、という方法が有効です。(下記参照) ・FORMタグを次のように変更します。 <FORM action="/cgi-bin/test.cgi" method="post" target="newwin" onSubmit="make_newwin(this)"> ・make_newwin 関数を作成します。 function make_newwin(f) {   var w = window.open('about:blank', f.target, 'スタイル設定');   w.focus(); } フォームを送信しようとすると FORM の onSubmit により、make_newwin が(送信前に)実行されます。この時、引数に this(FORM自身)を渡し、window.open の2番目の引数(target指定)に f.target(FORMのtarget属性値)を指定するのがミソです。 その後フォームの送信が行われますが、この時既に newwin という(スタイル指定された)ウィンドウが存在していますので、そちらに送信される、というわけです。 またこの方法では、JavaScript をオフにしている人でも、スタイル指定がされないだけで、別画面にCGIの結果を表示することができます。 (質問の方法では何も起こりません。)

sara555
質問者

お礼

回答有難うございます。 この方法を試したところうまくいきました。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

POSTで送ればいいような気がしますけど。。。

sara555
質問者

お礼

回答有難うございます。 POSTだけでは、うまくいきませんでした。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
  • mohao
  • ベストアンサー率15% (10/63)
回答No.1

escape()関数を使用してはいかがでしょうか 値を渡す際、以下のようにし、 '/cgi-bin/test.cgi?bikou='+escape(document.test.bikou.value); CGIのほうのjavascriptで unescape() をして書き出すと良いかと思います。

sara555
質問者

お礼

回答ありがとうございます。 この方法を試してみましたが、 CGIのjavascriptでうまく変換することが できませんでした。 他の時に使わせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストエリアの幅を10桁までにしてスクロールさせないようにしたい

    タイトルのままなんですが、可能でしょうか? <textarea name="textarea" cols="40" rows="10">テスト</textarea> あと、テキストエリアに<pre>タグをつけると改行が入ってしまい、 1行分テキストエリアから離れてしまいます・・・。 テストタイトル<br> <pre><textarea name="textarea" cols="40" rows="10">テスト</textarea></pre> すみません、どなたかわかる方いらっしゃいますか? 教えてください(^^

    • ベストアンサー
    • HTML
  • テキストエリア内の改行

    <textarea cols=  rows= ></textarea> を使ってテキストエリアを作っています。 テキストエリア内に予めコメントを 入れておきたいのですが、そのコメントを 改行したい場合はどうすればいいのでしょうか? <BR>のタグが使えないので困っています。 どなたか教えてください、お願い致します。

  • テキストエリア内の改行禁止

    テキストエリア内での改行を禁止するタグを教えてください。 wrap="off" は試したのですが、うまくいきません。 <TEXTAREA rows="1" cols="20" name="list1" class="min2"></TEXTAREA> どうか、よろしくお願いします。 表示上も、出来れば改行しないようにしたいのですが、 出来なければ、結果のみ改行しない形でも構いません。 どうか、よろしくお願いします!

    • ベストアンサー
    • HTML
  • 改行コード?

    <TEXTAREA name="moji" cols="80" rows="6"></TEXTAREA> で文字を入力したときmojiにはいっている改行コードは なにですか?

  • 入力テキスト内で改行コードが表示されてしまいます。

    現在phpで掲示板を作成しております。 返信画面でデータベースに保存している過去データを 返信用のテキストボックスで表示しているのですが、 例) ・コード <TEXTAREA NAME=body COLS=50 ROWS=8 wrap="soft"><? print $body ?></TEXTAREA> ・ブラウザ上 掲示板です<BR>テスト という風に表示されてしまいます。 改行が実行されないのはなぜでしょうか?

    • 締切済み
    • PHP
  • テキストエリアの作成法

     下記のような横一列に並んだ3つのテキストエリアを作成しました。Mozilla Firefoxではほぼ期待通り表示されましたが、インターネット・エクスプローラーでは全く表示されません。後者でも表示させるにはどうしたらよいでしょうか。 またテキストエリア内の文章に改行をつけるにはどうしたらよいでしょうか。 <form><p class=MsoNormal><span><TEXTAREA ROWS="13" COLS="70" NAME="textarea1"id=textarea1 style="HEIGHT: 540px; WIDTH: 300px; font-size: 9pt" readonly> 『テキスト』 </TEXTAREA> &nbsp;<TEXTAREA ROWS="13" COLS="70" NAME="textarea1"id=textarea1 style="HEIGHT: 540px; WIDTH: 300px; font-size: 9pt" readonly> 『テキスト』 </TEXTAREA> &nbsp;<TEXTAREA ROWS="13" COLS="70" NAME="textarea1"id=textarea1 style="HEIGHT: 540px; WIDTH: 300px; font-size: 9pt" readonly> 『テキスト』 </TEXTAREA></span></p></form>

  • テキストエリアの末尾にフォーカス

    テキストエリアの末尾にフォーカスを移動する方法はありますか。 <TEXTAREA NAME="TextArea" ROWS="7" COLS="73"> こんにちは。 僕は東京生まれです。★ </TEXTAREA> ★のところに移動させたい。

  • 改行コードを保存できない。

    <textarea wrap="hard" name="sentence" rows="3" cols="30"></textarea> このフォームで、入力したデータは、 PostgreSQLのテーブルに保存されるように構成しました。 フィールドは、"text"型です。 いざそれを、phpでHTMLに呼び出すと、改行文字は無視されます。 実際に、データベースを開くと、その値はこのようになっていました。 "ああああ・・あああ・・・・ああ" 改行コードはどうやら、"・"2個を改行1つと扱って保存しているようでした。 phpで、・・を含む値をHTML呼び出す時、 ・・を<BR>として呼び出して、改行してしまう技はないでしょうか?

  • テキストエリアの改行を変換(初心者

    <textarea rows="5" cols="10" name="myname">AAA BBB CCC</textarea> 上の内容を送信して、 AAA BBB CCC こんな感じで改行してファイルに書き込みしたいのですが、そのままでは改行されず1行で書き込まれてしまいます。 1つずつ改行するにはどうすればいいのでしょうか よろしくお願いします。

    • ベストアンサー
    • Perl
  • テキストエリアをenterキーでフォーカス移動したい

    複数あるテキストエリア間を、enterキーでフォーカス移動をしたいです。 以下のようにしましたが、2つめのテキストエリアへフォーカス移動すると、改行が入力され、カーソルが2行目へ移動してしまいます。 enterキーを押しているのでこうなってしまうと思うのですが、 カーソルが1行目へ移動するようにするには、どうしたらいいでしょうか? フォーカス移動後に改行コードがあったら、""にreplaceする・・等、試してみたのですが、なかなか上手くいきません。 どなたかお分かりになる方がいらっしゃったら、教えてください。 <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- function FirstFocus() { document.forms.F1.elements[0].focus(); } function nextFocus(n) { if (event.keyCode == 13) { for (var i = 0, f = n.form.elements; i < f.length; i++) { if (f[i] == n) { (f[i + 1] || f[0]).focus(); } } } } //--> </SCRIPT> </HEAD> <BODY onload="FirstFocus()"> <FORM name="F1"> <TEXTAREA name="T1" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR> <TEXTAREA name="T2" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR> <TEXTAREA name="T3" rows="5" cols="30"></TEXTAREA><BR> </FORM> </BODY> </HTML>

このQ&Aのポイント
  • スマートフォンからデータを移動する際に上手くいかないことがあります。そこで、エレコム株式会社の製品を使用することでデータ移動をスムーズに行うことができます。
  • エレコム株式会社の製品を使用してスマートフォンのデータ移動を行う方法についてご紹介します。
  • スマートフォンからデータを効率的に移動するためのアドバイスをお伝えします。エレコム株式会社の製品を活用すると、簡単かつ迅速にデータを移動することができます。
回答を見る

専門家に質問してみよう