Используя jQuery, как я могу установить содержимое текстовой области, когда значение из MySQL содержит символы новой строки - PullRequest
0 голосов
/ 28 апреля 2011

Чтобы сохранить мой код в чистоте, я по умолчанию использую jQuery для каждого элемента формы.

т.е. моя форма содержит такие элементы ..

<input name="mobile" id="mobile" type="text" />

В отдельном файле javascript, Я читаю данные из MySQL, затем использую jQuery для установки после загрузки формы ..

$('#mobile').val('07845 887766');

это значение читается из MySQL, и я генерирую код, подобный этому, в PHP ..

echo "\n $('#mobile').val('".$user['mobile']."');";

Это работает нормально, но проблема заключается в том, что есть поле textarea ..

<textarea name="notes" id="notes" ></textarea>

echo "\n $('#notes').html('TEST');";

Это работает нормально, но когда я заменяю его данными из базы данных, которые могутсодержат символы новой строки, я получаю сообщение об ошибке JavaScript.

echo "\n $('#notes').html('".$user['notes']."');";

Это может привести к этому коду (фактические значения ...)

$("#notes").html("INSERT INTO action    (
                    inputdate,
                )
                VALUES ()");

, который дает ошибку."неопределенный строковый литерал"

Ответы [ 4 ]

1 голос
/ 28 апреля 2011

это могут быть одинарные кавычки вместо двойных, попробуйте это:

echo PHP_EOL.'$("#notes").html("'.$user['notes'].'");';
0 голосов
/ 16 сентября 2014

Если вы используете умный шаблонизатор, вы можете использовать его как -

$('textarea#myTextAreaId').val({$arrVal.keyValue|@json_encode});

В противном случае эта проблема часто встречается, поскольку в настоящее время .val () для элементов textarea убирает возврат каретки.

0 голосов
/ 28 апреля 2011

Замените возвращаемую строку на \ n, примерно так:

echo "\n $('#notes').html('".str_replace("\n","\\n",$user['notes'])."');";

php - не моя самая сильная сторона, поэтому синтаксис может быть немного не таким. Но в основном замените строку возврата символами "\ n". (может понадобиться обработать / r тоже, я думаю, или их комбинацию)

РЕДАКТИРОВАТЬ: очевидно, если вы используете PHP 5.2 или выше, вы можете использовать json_encode(, и он будет обрабатывать кавычки и новые строки.

0 голосов
/ 28 апреля 2011

неопределенный строковый литерал

Вы получаете это сообщение, потому что в Javascript вы не можете разбить буквенные строки на несколько строк.

Что вам нужно сделать, это заменить символы новой строки в $user['notes'] на символы \r\n, чтобы вся строка была на одна строка , тогда вход <textarea> будет корректно отображать каждый элемент на новой строке .

Давайте использовать json_encode, чтобы помочь нам также избежать любых неприятных символов, которые не понравятся Javascript.

// This will convert to be Javascript friendly. 
// Output string will be enclosed in quotes " "
$notes_str = json_encode($user['notes']);
echo "\n $('#notes').html(" . $notes_str . ");";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...