我的条件如下。 按钮输入中的弹出功能有第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插入值进行任何更改?
我使用换行符直接将值存储在DB中。
答案 0 :(得分:0)
解决方案用于PHP端的nl2br函数
nl2br($yournewlinestring);
PHP的函数转换换行符为\ n
输入换行符但是在存储之前转换你的html换行符就像这样
$_POST['xyz'] = preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $_POST['xyz'] );
答案 1 :(得分: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>