改行コード変換で引数の受け渡しできず、改行含む場合にはalertが出力されない現象の原因と解決方法
- 質問者は、ColdFusionとJavaScriptを組み合わせてプログラムを書いています。
- 質問者のプログラムは、データベースからテキストを取得し、改行コード(Chr(13))を<br />に変換しています。
- 問題は、改行が含まれる場合にはalertウィンドウが出力されないことです。この現象の原因として考えられるのは、テキストの中で改行コード(Chr(13))が無視されている可能性です。解決方法としては、テキストを表示する前に改行コード(Chr(13))を除去することがあります。
- ベストアンサー
改行コード変換しても、引数の受け渡しが出来ない。
coldfusion と Javascript を組み合わせて、プログラムを書いています。 下記のプログラムは、 データベースからテキストを呼びだし(result.Message)、 その呼び出したテキストの中に、改行コードがあれば<br />に変換しています。 変換したテキストを引数にし、Javascript関数send_messageを呼び出しています。 問題は、ここから、 result.Message の中に元々改行が無ければ、alertウィンドウが出力されるのに 改行が含まれていると、alert ウィンドウが出力されません。 改行コードを<br />に変換しているのにも関わらずです。 この現象は、何が原因なのでしょうか。 解決方法を教えていただきたく、お願いいたします。 <cfprocessingdirective pageencoding="Shift-JIS"> <html> <head> <script language="JavaScript"> <!-- function send_message(message){ alert(message); } </script> </head> <body> <form name="BBS_form" method="post" action="send_message.cfm" enctype="multipart/form-data"> <cfinvoke component="bbs" method="ShowMessages" returnvariable="result"> </cfinvoke> <cfoutput query = "result" > <!--- 改行コードを<br> に変換 ---><!--- result.Message は、text型 ---> <cfset change_mes = Replace(result.Message, Chr(13), "<br />", "all")> <!--- 改行コードを変換しているのに、ボタンを押しても、alert ウィンドウが出力されない。---> <input type="button" name="test" value="テスト" onClick="return send_message('#change_mes#');"> </cfoutput> </body> </html>
- JavaScript
- 回答数3
- ありがとう数0
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Chr()を変えただけでreplace元を変えるのを忘れてました。m(_ _)m <cfset change_mes = Replace(result.Message, Chr(13)+Chr(10), "<br />", "all")> <cfset change_mes = Replace(change_mes, Chr(13), "<br />", "all")> <cfset change_mes = Replace(change_mes, Chr(10), "<br />", "all")>
その他の回答 (2)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2281)
すみません、まちがえました。 13が先でした。 <cfset change_mes = Replace(result.Message, Chr(13)+Chr(10), "<br />", "all")>
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2281)
改行コードは3種類ありますので、3種類ともに対応させないとダメじゃないでしょうか。 もうちょっといい書き方があるかもしれませんが、Coldfusionはよく知らないので。 <cfset change_mes = Replace(result.Message, Chr(10)+Chr(13), "<br />", "all")> <cfset change_mes = Replace(result.Message, Chr(13), "<br />", "all")> <cfset change_mes = Replace(result.Message, Chr(10), "<br />", "all")>
関連するQ&A
- CGIで改行タグを改行コードに変換ってできますか?
CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?
- ベストアンサー
- CGI
- 改行コードの<BR>への変換がうまくいきません。
はじめまして よろしくお願いします。 仕事でPHPを触れはじめたところです。 textarea タグで入力されたものをMysqlに保管し、 また表示するというようなものを作ろうとしています。 困っているのは Mysqlがどうのではなくその登録前に 改行コードを <br>タグ に変換をかけておこうというところで躓いています。 セッションを開始しておいてFormタグからの値を 次のページで受け取っています。 ここの過去ログ等を参考にしてみたのですが... $_SESSION['e_biko'] = htmlspecialchars($_POST['biko'] , ENT_QUOTES) ; $tmp_biko = ""; $tmp_biko = str_replace("\r\n", "\r", $_SESSION['e_biko']); $tmp_biko = str_replace("\r", "\n", $tmp_biko); $_SESSION['e_biko'] = str_replace("\n", "<br>", $tmp_biko); このあとでechoを使って$_SESSION['e_biko'] を表示させています。 しかし改行しないんです。<BR>タグへの変換ができておらず、表示されたHTMLのソースコードを見ると改行コードがそのまま出力されています。 HTML及びPHPの文字コードはEUCで記述しています。 開発及び確認はWindows・IE6で行っています。 何か考えられる原因、あるいはバグかあるでしょうか? ちなみに下記でも駄目でした。 $_SESSION['e_biko'] = preg_replace("/\r\n|\r|\n/", "<br>", $_SESSION['e_biko']); お分かりになられる方おられましたらよろしくお願いいたします。
- ベストアンサー
- PHP
- 改行コード変換のタイミングについて教えてください。
改行コード変換のタイミングについて教えてください。 前提: \n: ラインフィード \r: キャリッジリターン UNIX \n Winodws \r\n MAC \r PerlスクリプトによるCGIで、ブラウザに出力します。 このとき、生成するHTMLのFORM要素.INPUT要素.VALUE属性 に変数データを代入しています。 これは、文字列になっており、当初、\nを区切り文字として使用し、 HTMLとなってからJavaScriptでこの区切り文字を頼りに配列化しました。 ところが、MAC環境の方に確認をお願いしたところ、期待通りの動作をして おらず、調べたところ、\nがすべて\rに変換されていたため、JavaScriptで \nを探しても見つからなかったということがわかりました。 Windowsも\r\nに変換されています。 この改行コードの変換がなにを基準に、どのタイミングで起きているのかがよくわかりません スクリプトの文字コードとget要求をしてきたOSを見て、Apacheが行っているのか、 それとも、ブラウザがやっているのか。 はたまた、アプリケーション層に行くまでの下層プロトコルがやっているのか。 判断基準はGETの中にあるのか、出力されたcontent-typeなのか・・・・。 変換がなに依存なのかわからないと、どんなとき変換が起き、どんなときは起こらないのかが わからないので、このあたりの仕組みの詳細に詳しい方、ご教授願えませんか。 自分でもある程度調べたのですが、環境が限定されますし、ドキュメントもhttpプロトコル を調べるべきなのか、TCP/IPなのか、HTML(のFORMリクエスト)なのか、httpデーモン なのか、httpdが動いているUNIXサーバOSなのか、それともIEやNNの仕様を調べる必要があるのか・・・ どこがやっていることなのかわからないもので。
- 締切済み
- CGI
- 改行コードを変換するにはどうすれば?
cgiのデータをアスキーの改行コードに変換しなければいけないのですが、どうやったらいいのでしょうか。 テキストエディタは、TeraPadを使用しています。 よろしくお願い致します。
- ベストアンサー
- ホームページ作成ソフト
- <br>タグを改行に変えたい
掲示板を作っています。 テキストファイルに書き込んである文字列ですが、改行は<BR>に変換して保存します。 編集で呼び出すときに、<BR>をもとの改行コードに戻す作業を試みています。 $message =~ s/<br>/\n/ig; とやるとテキストエリアがすべて空白です。 $message =~ s/<br/\n/ig; と>をなくすと改行されてテキストエリアに表示されます。 ただ、データには>が残ったまま表示されます。 この対処法を教えてください。
- ベストアンサー
- Perl
- 引数が分かりません。
JavaScriptの超初心者です。 (1)のmessageと(2)のmessageと(3)の'Hello JavaScript !'との相関関係がよく分かりません。 又、引数そのものの意味もよく分かりません。 どなたか教えて下さい、よろしくお願いします。 <html> <head><title>イベントハンドラーの定義</title> <SCRIPT> <!-- function showMessage(message){ (1) window.alert(message); (2) } //--> </SCRIPT> </head> <body> <center> <hr>イベントハンドラーの定義<hr><br> ボタンをクリックするとダイアログボックスが表示されます。<br><br> <form> <input type="button" value="ここをクリック" onclick="showMessage('Hello JavaScript !');"> (3) </form> </center> </body> </html>
- ベストアンサー
- JavaScript
- 改行コードの変換方法
Excelシート内にあるテキストボックスの改行コード(LF)が多数存在してます。 これを改行コード(CRLF)に簡単に変換する方法はありますか? 対象文字を選択してExcelの置換機能で変換できませんか?
- ベストアンサー
- その他MS Office製品
- [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>
- ベストアンサー
- JavaScript