Вопрос:

Значение текстовой области, не сохраняющее разрывы строки из переменной

javascript php jquery html

436 просмотра

4 ответа

145 Репутация автора

У меня есть текстовая область, которая должна сохранять переданное значение и формат после отправки, но по некоторым причинам \ n, похоже, не передается из переменной 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>'

Переменная передается из php в JS. Когда я отображаю переменную, я получаю ожидаемый результат:

1\n2\n3

Когда переменная присваивается значению textarea, результатом является:

123

Вместо:

1
2
3

Теперь, если я изменю js на следующее, я получу ожидаемый результат с каждым числом в новой строке.

$("textarea").val("1\n2\n3");

Кто-нибудь знает, почему переменная php не передает \ n возвратов в JS?

Автор: nickyb Источник Размещён: 06.03.2017 06:19

Ответы (4)


0 плюса

301 Репутация автора

Вы должны использовать это.

    <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>'
?>

введите описание изображения здесь

Автор: Nilber Vittorazzi Размещён: 06.03.2017 06:27

0 плюса

2472 Репутация автора

Проблема в том, что вы ожидаете, что браузер 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>'

Любой из обоих подходов должен работать.

Автор: NaijaProgrammer Размещён: 06.03.2017 06:29

1 плюс

1393 Репутация автора

Решение

Использование 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>'
Автор: D Lowther Размещён: 06.03.2017 06:35

0 плюса

513 Репутация автора

$text = '1\n2\n3';

изменить на знак двойной кавычки:

$text = "1\n2\n3";

В PHP двойные кавычки "и одинарные кавычки" не разбираются равными. Для чего-то нам нужно использовать двойные кавычки, например так

Для: $ text = "\ 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>
Автор: b2ok Размещён: 06.03.2017 07:29
Вопросы из категории :
32x32