ここから本文です

jQueryで取得した要素に含まれる改行コード(\n)をテキストエリアへ反映させるに...

nya********さん

2011/11/916:18:18

jQueryで取得した要素に含まれる改行コード(\n)をテキストエリアへ反映させるには?

jQueryを勉強中の者です。
表題の件を実現させたいのですが、どうしても改行として表現されず、そのまま「\n」と表示されてしまいます。

※以下、ソースです。

[動作]・・・divクリックでテキストエリアに文字を入れる。


■HTML
<body>
<div data-obj="文字\n\n文字">テスト</div>
<textarea cols="20" rows="20" id="area"></textarea>
</body>


■jQuery
<script type="text/javascript">
$(document).ready(function(){
$("div").click(function () {
var temp = $(this).data("obj");
$("#area").val(temp);
});
});
</script>

実現したいことは
・タグの要素に改行入り文字列を持たせる。
・divをクリックすることでテキストエリアへ文字列を渡し、改行が反映されている。
の2点です。

基本的な事かも知れませんが、解決策があればご教授頂きたく。

よろしくお願いします。

閲覧数:
44,758
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

m_t********さん

2011/11/917:34:37

HTMLのデータ中では、特殊な文字の指定には、&で始まる「&ほげほげ;」といった記述を使います。(例えば、改行文字は「&#10;」)
「\」には特別な意味はありません。HTMLなデータ中でも"文字\n\n文字" という記述は、その見た目通りの文字列になります。

一方、JavaScript では、ダブルクオートで括られた文字列中では、「\」に特別な意味があり、たとえば、「\n」が改行を意味するわけです。

質問者さんの目的を果たすには、二つの方向があります。

方法1 HTMLのデータ中では、HTMLのデータとして改行を入れる
HTML側で「"文字&#10;&#10;文字"」とすれば、これはHTMLのデータとして「文字<改行><改行>文字」という内容に付いての記述になります。(jQeuery(JavaScript)側での「"文字\n\n文字"」と等価)
この方法の場合、jQuery側の修正は不要です。

方法2 JQuery(JavaScript)側で、「\n」という文字列を改行に置き換える処理を行う
JQuery側で
---
var temp = $(this).data("obj");
temp = temp.replace(/\\n/g, "\n");
$("#area").val(temp);
---
といった処理を入れると、「\n」という文字列が改行コードに置き換えられます。
この方法の場合、HTML側の修正は不要です。

質問した人からのコメント

2011/11/9 18:09:41

成功 無事実現できました!

今回はHTML側で改行文字を入れる方で行こうと思います。
勉強になりました。

丁寧な回答ありがとうございました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

せっかくの機会が台無しです

みんなのアンテナ

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる