0

我有以下条件。按钮输入中的弹出函数有第 1 行,后跟换行第 2 行。当我单击 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 插入值进行任何更改?

我用换行符直接将值存储在数据库中。

4

2 回答 2

0

解决方案是在 PHP 端使用nl2br函数

nl2br($yournewlinestring); 

PHP 的函数将换行符转换为 \n 的换行符

但是在像这样在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 回答