• 締切済み

元の記述はそのままに、置換された文字列を送信したい

メールフォームを使用しています。 確認画面でタグを無効にするために、<や>を文字実体参照に 置き換えるJavaScriptを書き、動作させることが出来ました。 行った記述は以下の通りです。 外部JavaScriptに function htmltagboid(){ var jittaisansho = document.mailform.message.value.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\r\n/g,'<br><!---->').replace(/\r|\n/g,'<br><!---->'); document.mailform.message.value = jittaisansho; } 対象となるフォームに <form method="post" action="http://form3.future-s.com/cgi/form3.cgi" name="mailform" id="mailform" onsubmit="return htmltagboid()"> 対象となるテキストエリアに <textarea name="message" rows="2" cols="40">メールフォームです。管理人になにか伝えたいことがあればご利用ください。匿名で送れます。</textarea> が、この方法だと一つ問題があります。 確認画面で内容修正のために戻るとテキストエリア内の文章が文字実体参照に置き換わり、 元の文章と違ってしまうのです。 これをテキストエリア内の記述はそのままに、送信される文字列のみ置換されたものを送信する ということは可能でしょうか? 適切なページへのリンクでも助かります。

みんなの回答

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.1

まず<textarea></textarea>を<form></form>の外に追い出し、name="message"をid="message"とします。 そして、hidden属性のtextボックス(name="message") を<form></form>内に追加します。 htmltagboid()では、document.getElementById('message')に対して置換を行い、その結果をdocument.mailform.messageに代入してやればいいのでは?

ringobito
質問者

お礼

mrumesukeさん、ご返答ありがとうございます。 mrumesukeさんのアドバイスを参考にして、理想どおりの働きをさせることが出来ました。 変更した記述は以下の通りです。 外部JavaScriptの document.mailform.message.valueを document.mailform.elements[5].valueに変更、 対象となるテキストエリアの <textarea name="message" rows="2" cols="40">を <textarea rows="2" cols="40">に変更、 textareaの直後に新たに <input type="hidden" name="message">を追加しました。 Internet Explorer 5.1.7・Mozilla 1.3.1・Netscape Communicator 4.8・iCab 2.9.7 (すべてMacintosh版)での動作を確認しました。 どうもありがとうございました。

関連するQ&A