0

HTTPRequestプロパティを使用してテキストエリアに改行を出力したい。これが私のコードです:

<script>
function htrt(str)
{
    var xmlhttp;
    //document.getElementById("txtwrite").innerHTML = str; 
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            document.getElementById("txtwrite").value = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","lecture.php?techtxt=" + str);
    xmlhttp.send();
}
</script>


<textarea rows="9000" cols="9000" style="height: 200px; width: 725px;" id="txtwrite" readonly="readonly"></textarea>    

<textarea cols="9000" rows="9000" name="txtname" style="height: 200px; width: 725px;" onkeyup="htrt(this.value)"></textarea>

これがlecture.phpコードです:

<?php
$str=$_GET['techtxt'];
        echo $str;
?>

textareaに改行を出力しません。nl2br($ string)関数を使用して、テキストエリアで何が起こっているかを確認しましたが、機能しません。誰か助けてください。

4

2 に答える 2

0

エコーバックする前に、PHPのhtmlspecialchars関数を使用して、他のテキストエリアからの新しい行に関する問題を解決します。

エンコードされた文字列を使用したjsfiddleテスト:http://jsfiddle.net/gartz/5mEEQ/

これ:

<a href='te
st'>Test</a>

これになります:

&lt;a href=&#039;te&NewLine;st&#039;&gt;Test&lt;/a&gt

そして、textareaタグの間はチャームのように機能します。

ただし、これを変更する必要があります。

document.getElementById("txtwrite").value = xmlhttp.responseText;

これに:

document.getElementById("txtwrite").html = xmlhttp.responseText;
于 2013-01-05T07:26:23.953 に答える
0

textareaの代わりにdivを使用してください。textareaタグでは機能しているhtmlタグはありませんが、divでは機能しているためです。

この関数nl2br()は、改行をbrタグに変換します。この関数をnl2br()よく学んでください。

于 2013-01-13T08:28:12.900 に答える