テキストエリアの改行を必死にキャプチャしようとしています。テキストエリアの内容をデータベースに保存し、データベースから取得したときにテキストエリアに表示したいと考えています。テキストエリアは編集ボックスとして機能する必要があります。htmlで表示する必要はありません。
テキストエリアからのテキストを行の配列に変換し、文字 \r\n で爆発させ、それをコンマ区切りに分解することにより、テキストエリアのコンテンツをサーバーに投稿する通常の html ページでこれを機能させることができました行のリスト。次に、行を再表示したい場合は、コンマを \n に置き換え、テキストエリア内に表示できる改行付きのテキストを取得します。ちょっとしたハックですが、うまくいきます。
ただし、html を使用してテキストエリアのコンテンツをサーバーに投稿する代わりに、javascript で getElementByID を使用してそれらをプルし、javascript でサーバーに投稿すると、うまくいかないようです。
html を使用してテキストエリアのコンテンツを取得し、\r\n で爆発すると、行と同じ数の要素を持つ配列が取得されます。
ただし、javascript で getElementByID を使用してテキストエリアのコンテンツを取得し、\r\n で爆発すると、行が実行される配列内の要素が 1 つだけ取得されます。言い換えれば、私は改行を取得しません
javascriptでテキストを引っ張ると改行が消える理由を知っている人は誰でも、javascriptで改行を保持する方法について提案がありますか?
ありがとう。
短縮コード: javascript
getText() {
var textobj = document.getElementById("text");
var text = textobj.value;
...some code for AJAX
document.getElementById("droptext").innerHTML=xmlhttp.responseText;
... some more code for Ajax
xmlhttp.open("GET","savetext.php?text="+text,true);
xmlhttp.send();
}
html
<div id="droptext"><textarea id="text"><textarea></div>
<a href="javascript:void(0);" onclick="getText();">Save Text</a>
php
$text = $_GET['text'];
$textarray = explode("\r\n", $text);
$text = implode(",",$textarray); //converts to comma delimited list
...store in database
...fetch from database and echo text back for editing
$text = $row['text'];
$text = str_replace( ",", "\n", $text);
echo '<textarea>'.$text.'</textarea>';