0

以下の条件があります。ボタン入力の pop 関数には、改行 Line2 が続く行 1 があります。JavaScript のボタンをクリックすると、コンソールに「 Unexpected token ILLEGAL 」というエラーが表示されます。

ボタンの pop() 内の値は動的に生成されます。入力テキストに改行文字がある場合にのみ、このエラーが発生します。

<script type='text/javascript'>

function pop(valu)
{
alert("here"+valu);
document.getElementById('box').innnerHTML = valu;
}

</script>

<button onclick="pop('Line 1
Line 2')"> Click </button>
<textarea id='box'></textarea>

バックエンドはPHPです。

フォアグラウンドでこれを達成する方法はありますか? または、 DB に値を挿入する変更を行う必要がありますか?

改行文字を使用して値をDBに直接保存します。

4

2 に答える 2

0

解決策は、PHP側でnl2br関数を使用することです

nl2br($yournewlinestring); 

改行を変換して \n の改行を入力する PHP の関数

ただし、格納する前に、このように php で html の改行を変換します

$_POST['xyz'] = preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $_POST['xyz'] ); 
于 2013-05-17T09:07:40.807 に答える
0

改行文字が必要な場合は、次のようにします。

<?php $pop_variable = str_replace("\n", '\n', $pop_variable); ?>
<button onclick='pop("<?php echo htmlentities($pop_variable, ENT_QUOTES) ?>")' />

引用符をエスケープするために htmlentities も実行することを忘れないでください。

ただし、これは HTML ではやりすぎだと思います。これを PHP 配列に格納してから格納すると、より有益な場合がありjson_encode()ます。そうすれば、上記を実行したり、" または ' が $pop_variable にあるときに何が起こるかを考慮する必要がなく、さらにボタンを追加したい場合は拡張可能になる可能性があります (もちろん、これはユースケースによって異なります)。 .

例:

<script>
function pop(valu) {
    // Should do some error checking to ensure pop_var is set
    document.getElementById('box').innnerHTML = pop_var[valu];
}
var pop_var = <?php echo json_encode(['button1' => "Line 1\nLine2", 'button1' => "Another Line 1\nAnother line with ' single quotes..."]);
</script>

<button onclick="pop('button1')">Click</button>
<button onclick="pop('button2')">Click</button>
<textarea id='box'></textarea>
于 2013-05-19T01:07:25.843 に答える