- ベストアンサー
テキストエリア内でenterキーで改行する方法
- テキストエリア内でenterキーを使って改行できる方法について教えてください。
- 現在、テキストエリア内では<BR>タグを使わないと改行できません。しかし、enterキーを使って改行したいです。
- コピペしたい文章をテキストエリア内に貼り付けた後も、<BR>タグを入れる手間がなくenterキーで改行できるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サブルーチン decode の $in{'code'} =~ s/\r\n//g; $in{'code'} =~ s/\r//g; $in{'code'} =~ s/\n//g; $in{'msg'} =~ s/\r\n//g; $in{'msg'} =~ s/\r//g; $in{'msg'} =~ s/\n//g; ですべての改行文字を削除していますから、ここを $in{'code'} =~ s/\r\n/<br>/g; $in{'code'} =~ s/\r/<br>/g; $in{'code'} =~ s/\n/<br>/g; $in{'msg'} =~ s/\r\n/<br>/g; $in{'msg'} =~ s/\r/<br>/g; $in{'msg'} =~ s/\n/<br>/g; にすれば、とりあえずご希望は叶うでしょう。
その他の回答 (2)
- okmotokun
- ベストアンサー率59% (92/155)
前回答の、WindowsOSマシンからは「%0A%0D」、MacOSマシンからは「%0A」、UNIX系OSマシンからは「%0D」にエンコードされて送ってきます。 は、WindowsOSマシンからは「%0D%0A」、MacOSマシンからは「%0D」、UNIX系OSマシンからは「%0A」にエンコードされて送ってきます。 の間違いでした。 ところで、補足内容から推測すると、フォーム受信データのパースには何かのライブラリを使っているようですから、テキストエリアに入力された改行は、perlの改行文字「\n」に変換されているはずです。 そうだとすれば、 unshift(@lines,"$no<>$in{'ct1'}<>$in{'ct2'}<>$in{'ct3'}<>$in{'tl'}<>$in{'code'}<>$in{'msg'}<>$in{'url'}<>$date<>$times<>$in{'key1'}<>$in{'key2'}<>$in{'key3'}<>$in{'key4'}<>$in{'key5'}<>$in{'rec'}<>$in{'line'}<>$in{'no_act'}<>\n"); の前に、 $in{'code'}=~s/\n/<br>/g; $in{'msg'}=~s/\n/<br>/g; を挿入すれば良いと思います。
補足
ありがとうございます! 早速、アドバイス通りやってみたんですが、何も変わりなかったです。゜(゜´ω`゜)゜。 私が何か間違ってるのかもしれませんね・・。 それで、全てのcgiコードを見てもらった方がいいかと思って、 cgiをテキストで保存してサーバーにアップしたんで、 もし良かったら、見てもらえませんか? ↓ ↓ ↓ http://shufumama.chu.jp/myshop.txt eyterキーで改行させないように設定されてるんでしょうか? それを解除しないといけないのかな~? と思って、自分なりに色々調べたりしてるんですが、 どうしてもまだわからなくて・・。 まさに、今書いてるこのテキストフォームのようにenterキーで 改行したいです~~。゜(●'ω'o)゜。 よろしくお願いします!
- okmotokun
- ベストアンサー率59% (92/155)
フォームのテキストエリアに入力された改行(<br>ではなく実際の改行)は、デフォルトのenctypeの場合、WindowsOSマシンからは「%0A%0D」、MacOSマシンからは「%0A」、UNIX系OSマシンからは「%0D」にエンコードされて送ってきます。 ですから、CGIスクリプトのフォーム受信データをパースするところで、この改行コードを「<br>\n」に変換してやれば良いのです。
補足
アドバイスありがとうございます!! 超初心者なりに色々調べてて、なんとなくそうなのかな~?とは 思ってましたが、具体的にどういう風にタグ?を書けばいいのか どの場所に書くのがいいのかが、いまいちわからなくて・・(^_^;) なんとなくこの辺りかな?と思うとこなんですが、違いますか? ↓ ↓ ↓ ----------------------------------------------------- # 新規登録の場合 } else { # 時間取得 &get_time; ($num,$ct1,$ct2,$ct3,$tl,$code,$msg,$url,$dt,$tm,$k1,$k2,$k3,$k4,$k5,$rec,$line,$no_act) = split(/<>/, $lines[0]); $no = $num + 1; $dt2 = $date; unshift(@lines,"$no<>$in{'ct1'}<>$in{'ct2'}<>$in{'ct3'}<>$in{'tl'}<>$in{'code'}<>$in{'msg'}<>$in{'url'}<>$date<>$times<>$in{'key1'}<>$in{'key2'}<>$in{'key3'}<>$in{'key4'}<>$in{'key5'}<>$in{'rec'}<>$in{'line'}<>$in{'no_act'}<>\n"); open(OUT,">$logfile") || &error("ファイルを開けません » $logfile","lock"); print OUT @lines; close(OUT); } # 登録完了メッセージ &header; if ($in{'edit_flag'} eq "true") { $comp = "修正"; } else { $comp = "登録"; } if ($in{'rec'} == 1) { $tl_color = $rec_color; } else { $tl_color = $mn_color } print <<"EOF"; <div style="text-align:center;"> <p><strong style="color:$bd_color;">以下の内容で$comp完了しました。</strong></p> EOF -------------------------------------------------------- この辺で合ってるとすれば、具体的にどこにどのように書けばいいのか 教えて頂けると嬉しいんですが・・・。 本当にチンプンカンプンなのにあつかましい事言ってスイマセン! よろしくお願いします゜・(。>д<。)・゜
お礼
キャ~~~!!できましたぁ~~~゜+。ヤッタァ★(o゜∀`从'∀゜o)★ヤッタァ。+゜ ありがとうございます~~~~(@^▽^@) 私ももしかしたら・・って思って似たような事はしてたんですが、 違う場所でやってました(^_^;) 本当にありがとうございましたぁ~~~~!!