アプリ版:「スタンプのみでお礼する」機能のリリースについて

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>

A 回答 (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")>
    • good
    • 0

すみません、まちがえました。


13が先でした。

<cfset change_mes = Replace(result.Message, Chr(13)+Chr(10), "<br />", "all")>
    • good
    • 0

改行コードは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")>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!