テキストエリアに改行入りのテキストを挿入する方法

このQ&Aのポイント
  • テキストエリアに外部から取得した改行入りのテキストを読み込む方法について説明します。
  • テキストエリアに挿入するテキストの改行を'|'から' 'に置換する方法を示します。
  • 改行の入ったテキストをテキストエリアに挿入する際に発生するスクリプトエラーの対処方法について説明します。
回答を見る
  • ベストアンサー

テキストエリアに改行入りのテキストを挿入したい。

テキストエリアに外部から取得したテキストを読み込みたいと思っています。 そのテキストを、以下のコードのように'|'を'\n'に置換します。 このようにテキストに改行(\n)が入っていると、 オブジェクトを指定してください。というスクリプトエラーが発生するようです。 やりたいことは、テキストエリアに改行つきのテキストを挿入したい。 ということです。 何か良い方法はないでしょうか。 <script language="JavaScript"> function init(){   with(document.testform){ <% String text_abc = (String)request.getAttribute("test"); text_abc = text_abc.replace('|','\n'); %> textareaAAA.value="<%=text_abc%>";   } } </script>

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

うーん・・・ レプレースしてからvalueに代入してますが、 代入してからリプレースすればいけるのでは? たとえばこんな感じ <script> str="a|b|c"; str=str.replace(/\|/g,"\n"); alert(str); <script>

HAWAI777
質問者

お礼

おっしゃる通り、 代入してからreplaceして、うまくいきました。 ありがとうございました。

その他の回答 (2)

回答No.3

JSPはやったことがないのでわからないが, もしできるなら <% String text_abc = (String)request.getAttribute("test"); text_abc = text_abc.replace('|','\n'); String enc_text_abc = java.net.URLEncoder.encode(text_abc,"UTF-8"); %> textareaAAA.value = decodeURI("<%=enc_text_abc%>"); という方が好きかな。 text_abcにU+005C,U+000A,U+000D,U+0022 それに,Ecmascript側の文字符号化方式などで直接対応できず、エスケープしなければならない文字が含まれている可能性だってある。 少なくとも,enc_text_abcは[a-zA-z0-9]もしくは%[0-9A-F][0-9A-F]のどちらかの書式になるからこの問題は発生しないはず

HAWAI777
質問者

お礼

試してみます。ありがとうございました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

\n じゃなくて \a なんじゃない? または \n という文字列(つまり%側…asp?…が与えるのは \\n )が書き込まれるようにしてみるとどうなる?

HAWAI777
質問者

補足

すみません。 ()の中の表記の意味が読み取れませんでした。 置換の件は解決しました。 ありがとうございます。

関連するQ&A

  • テキストエリア内で改行するには。

    次のスクリプトを実行すると、テキストエリア内に 01234560 と数字が表示されますが、これを 0 1 2 . というように改行も含めてテキストエリアに出力するにはどうすればよいでしょうか。 ¥nという文字を使用するのでしょうか? <html> <head> <script language="JavaScript"> <!-- var textA="" function my1() {for (i=0;i<11;i++){textA=textA+new String(i)} document.form1.text1.value=textA;} //--> </script> </head> <body> <form name="form1"> <textarea name="text1" size="10"></textarea> <input type="button" value="CLICK!" onClick="my1();"> </form> </body> </html>

  • テキストエリアの改行を取得したい

    最近CGIを独学ではじめたのですが、複数行のテキストエリアからの文字列の取得をした場合、改行が反映されずに表示されます。 改行コードのようなものは取得されている、とちらりとどこかで見たことがあるのですが、どのように取得して改行させるかが分かりません。 すみませんが、ご存知の方がいらっしゃいましたら教えていただけないでしょうか。 このような感じで書きました。 my $cgi = CGI::new(); my $area = $cgi->param('text'); print "Content-type: text/html\n\n"; print $area;

    • ベストアンサー
    • CGI
  • Java Scriptによるテキストエリア内での改行

    Java Scriptでテキストエリアに文字を書き込む方法で、 フォーム名.テキストエリア名.value = "文字&文字" と書けば、テキストエリアに文字&文字を書き込んでくれます。 でも、こうすると、改行ができません。 どうすれば、改行ができるようになるのでしょうか?

  • テキストエリアに入力した改行コードを保持したい

    テキストエリアにコメントを入力して、その内容をDBに保存し、別ページで表示させる入力ページの作成で、フォーム内に ・テキストエリアを設置 ・その下に「プレビュー」ボタンを設置 ・その下にプレビューが表示されるエリアを設置 ・一番下にsubmitボタンを設置 test1.phpにて <form name ="form1" method="post" action="test2.php"> <table> <tr><td> <text area name ="comment" id ="comment"> </textarea> </td></tr> <tr><td> <a href="javascript:void(0);" onclick="preview_comment(); "> <img src="preview.jpg"> </a> </td></tr> <tr><td> <span id="preview_comment"> プレビュー </span> </td></tr> </table> <div><input type="submit" value ="submit"></div> </form> head部分に <script language="JavaScript"> <!-- function preview_comment() {var comment_details=document.getElementById("comment").value; document.getElementById("preview_comment").innerHTML=comment_details; } //--> </script> を設置しました。 テキストエリアにコメントを入力し、改行がある場合はその改行コードを保持した状態がプレビューとして表示され、確認をしてOKだったらSubmit、という処理を考えているのですが、改行コードがなくなってしまいます。 改行コードを維持したままプレビューエリアにコメントを表示させることはできますでしょうか? どこを修正すればいいか教えて下さい。

  • テキストエリア内の改行もそのままクリップボードへ

    テキストエリアをクリック→テキストエリア内の内容がコピーされる。 というページを作成しています。 <textarea cols="65" rows="6" onclick="this.select();clipboardData.setData('text',this.value);"> ○○○ ●●● △△△ 111111 222222 </textarea> この内容だと、テキストエリア内の改行が反映されず、コピーされたものを他の場所に貼り付けると、すべて横に繋がった1行の文になってしまいます。 これを、目に見えているまま、改行も含めてそのままコピーさせるには、どうすればいいですか? ちなみに、必要な情報な情報かどうかわかりませんが、同様のテキストエリアが同一ページ内に複数あります。 テキストエリアをクリックでコピーではなく、コピーボタンを押下でコピーでも構いませんが、コピーされるとテキストエリアの色が反転(?)するという動作がほしいと思っています。 説明が下手ですみません…よろしくお願いします。

  • [javascript][IE] textarea内の改行を消す方法を教えてください。

    テキストエリア内の改行をreplaceで除去したいのですが、FireFoxではうまくいくのですがIEではうまく動作しません。 下記のようなソースです。 IEではどのように書けば良いのでしょうか。 <html> <head> <script type="text/javascript" language="javascript"> function change_box(){ temp = document.getElementById("in").value; temp = temp.replace(/\n/g,""); document.getElementById("out").value = temp; } </script> </head> <body> <form> <textarea id="in" rows="3" > 一行目 二行目 三行目 </textarea><br /> <textarea id="out" rows="3" ></textarea><br /> <input type="button" value="変換" onclick="change_box()"> </form> </body> </html>

  • ボタンを押してテキストエリアの内容をクリアする方法

    自分のHPにテキスト翻訳機能をつけようと思い Google language APIを利用したサイトに習い以下のように 作ってみました。(ソース提供してあった場所からいただきました) この中にはリセットボタンがなかったので自分でつけてみたのですが、 テキストエリアの内容をうまくクリアする方法がわかりません。 リセットボタンを押したら左右両方のテキストエリアの内容をクリア したいのです。 おそらく scriptのところにfunction reset()という内容を つけなければならないのではと言うところまでは分かるのですが。 私のレベルには限界がありますので、どうぞよろしくご教授ください。 スクリプトを貼ります。 <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <style type="text/css"> textarea { height: 50px; width: 250px } </style> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("language", "1"); // 画面初期化時に言語選択ボックスを作成する function init() { var langList = document.getElementById("target-language"); // (1) Language APIで使える言語をループしてリストに表示 for (var lang in google.language.Languages) { var langOpt = new Option(lang, google.language.Languages[lang]); langList.options[langList.options.length] = langOpt; } } // body.onload時にinit()が呼ばれるようにする google.setOnLoadCallback(init); function translate() { var source = document.getElementById("source").value; // (2) 入力された文字列から、言語を自動的に判別する google.language.detect(source, function(detectResult) { if (detectResult.error) { alert("Error:" + error.message); return; } // 選択されている言語を取得 var langList = document.getElementById("target-language"); targetLang = langList.options[langList.selectedIndex].value; // 翻訳 google.language.translate( source, detectResult.language, targetLang, function(result) { if (result.error) { alert("Error:" + result.message); return; } document.getElementById("result").value = result.translation; }); }); } </script> </head> <body> <center> <textarea id="source"></textarea> <textarea id="result"></textarea><br> Translate into <select id="target-language"></select> <button onclick="translate()">Translate</button> <button onclick="reset()">Reset</button> </center> </body> </html>

  • csvファイル改行コードの置換について

    お世話になります。 csvファイルで作成したデータを出力表示させるスクリプトで csvファイル内の改行コード(セル内)以後のデータが出力できません。 下記の置換で改行コード以後のデータが表示されません。 $abc =~ s/\r\n//g; $abc =~ s/\n//g; $abc =~ s/\r//g; csvファイル内の改行の数が多く、1行のデータが改行の為に、2行になったりしているので出力前に置換し表示させる方法です。 csvファイル作成時につく""は正常に置換しています。 似たような質問もあったのですが、少し違うようですので質問いたしました。 何卒、ご教授お願いいたします。

    • ベストアンサー
    • Perl
  • テキストエリアにテキストファイルを改行コードごと読み出すには

    ただ今勉強中のCGIを使って、テキストファイルの編集・上書き保存をテキストエリアから行いたいのですが、テキストエリアに読み込む時に改行コードが読み込めないためか、最後の一行しか表示できません。どのようにすると、改行コードを含めて編集できるのでしょうか? その「できないコード(サブルーチン)」は↓になります。 $commentfile = "comment.txt"; ■ 読み出し sub read_commentfile { local($masg); open(IN, $commentfile); while (<IN>) {$masg = join('',$_);        $massage = $masg; } close(IN); } ■ コメントの編集画面 sub comment { local($html); &read_commentfile; #HTML作成 $html = << "EOM"; <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=$charset"> <title>コメントの編集</title> </head> <body> <form action="$self" method=post> <input type=hidden name=mode value="savecomment"> <hr> コメント<br> <textarea name=masg cols=40 rows=4>$massage</textarea> <br> <input type=submit value=" 更新 "> </form> <hr> </body> </html> EOM &print_html($html); } ■ 上書き保存 sub savecomment { local(@text); push(@text, "$FORM{'masg'}\n"); open(OUT, ">$commentfile"); print OUT @text; close(OUT); } 本来でしたら、ファイルのロック・解除、表ダグ、パスワード等の記述もあるのですが、省いてあります。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • Macintosh環境でテキスト文字 \ を認識する方法を教えて欲しいです

    Macintosh環境において、S-JISフォーマットの、テキストファイル text.txt を読み込み、テキストで記述された改行コード変換するactionスクリプトを考えたいと思っております。 そこで、以下のようなスクリプトをつけたムービークリップを作りました。 onClipEvent (load) {   // テキストファイルの読み込み   System.useCodepage = true;   this.loadVariables("test.txt"); } on (release) {   // 改行文字を認識してメッセージに改行を追加   str = new String(text);   str = str.split(String.fromCharCode(92,110)).join("\n");   str = str.split(String.fromCharCode(92,114)).join("\n");   str = str.split("\\n").join("\n");   str = str.split("\\r").join("\n");   _root.DOCS= str; } 用意したtext.txtの内容は以下の通りです: &text=この先にnの改行があります\nこの先にrの改行があります\r¥¥n→\\n  ¥¥r→\\r& これを実行してみたところ、 ・Windows環境(FLASH7 & FLASH8)では_root.DOCSは以下のように表示されました: この先にnの改行があります この先にrの改行があります ¥¥n→\   ¥¥r→\ ・Macintosh環境(FLASH7 & FLASH8)では_root.DOCSは以下のように表示されました: この先にnの改行があります\nこの先にrの改行があります\r¥¥n→\\n  ¥¥r→\\r どうもMacintosh環境では、テキストの \ の認識が、split命令内では String.fromCharCode(92) や "\\" では認識しないのではないかと考えております。 この動作をMacintoshで実現する為には、どのように表記すればよろしいでしょうか。 良い案をおもちの方がおられましたら、是非御教授御願いできませんでしょうか。 よろしく御願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう