Textarea值不保留换行符
textarea我需要在提交后保留提交的值和格式,但由于某些原因,\ n似乎无法从变量php变量中传递。Textarea值不保留换行符
$text = '1\n2\n3';
echo '<script>
var text = "'.$text.'";
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>'
变量从php传递给JS。当我附和可变我得到预期的结果:
1\n2\n3
当变量被分配到textarea的值的结果是:
123
相反的:
1
2
3
现在,如果我将js更改为以下内容,每个数字在新行上都会得到预期结果。
$("textarea").val("1\n2\n3");
有谁知道为什么PHP变量不流通\ n返回到JS?
使用json编码应该以JS会理解的方式逃脱你的换行符。
$text = json_encode('1\n2\n3');
echo '<script>
var text = JSON.parse("'.$text.'");
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>'
感谢大家谁提供的建议解决方案,遗憾的是没有这些答案在传递会话变量时起作用。但是,这给了我一个简单的黑客的想法,即使它不是很干净。我通过json_ecoded会话变量,然后传递变量通过'SUBSTR($文本,1,-1)'删除起始和结束的报价,因此它可以通过JS解析。出于某种原因,JSON.parse不能按预期工作。谢谢。 – nickyb
你应该使用这个。
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<textarea rows="4" cols="50">
</textarea>
<?php
$text = '1\n2\n3';
echo '<script>
var text = "'.$text.'";
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>'
?>
问题是你期待浏览器的JavaScript了解PHP的 “\ n” 字符。这是行不通的。此外,您的代码使用单引号表示换行符。 PHP要求您使用双引号来表示换行符特殊字符。
至少有两种方法可以解决这个问题。
首先是使用PHP的nl2br()函数。在这种情况下,你的代码可以改写为:
$text = "1\n2\n3"; //notice the use of double quotes.
echo '<script>
var text = "'. nl2br($text).'";
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>'
的第二种方式是直接在您的变量声明中使用HTML标签
。这将避免使用PHP的nl2br()函数。
$text = '1<br>n2<br>n3';
echo '<script>
var text = "'.$text.'";
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>'
无论是这两种方法的应该工作。
由于我使用nl2br在功能的另一部分是可变的,但我不相信textarea的可以解析
标签,因为当我曾尝试它显示
为文本。所以,我目前恢复的
标签后面的\ n与strreplace:'$文字= str_replace函数(“
”,‘\ n’,$文本);' –
nickyb
$text = '1\n2\n3';
改变双引号标志:
$text = "1\n2\n3";
在PHP双引号“和单引号'不能解析相等,我们需要用双引号,像这样的东西
。为: $文字= “\ N1 \ N2 \ N3 \ n”;
源页面的看法是:
<script>
var text = "
1
2
3
";
$(document).ready(function() {
$("textarea").attr("placeholder","1) Start Each Comment On A New Line...");
$("textarea").val(text);
});
</script>
在PHP backslesh“\”有阻止某事的作用。 – b2ok