Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 21:22   #1
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию Экранирование двойных кавычек в JavaScript

Цель: чтобы при нажатии на один radiobutton вылезал один текст, а при нажатии на второй другой

Допустим есть такой код на php, а внутри выводиться JS:
PHP код:

$mat1
="\"1"
$mat2="2";
echo 
"<input type=\"radio\" name=\"type\" value=\"1\" checked onclick=\"document.getElementById('form_add').innerHTML = '$mat1'\">Значение 1<br>

<input type=\"radio\" name=\"type\" value=\"2\" onclick=\"document.getElementById('form_add').innerHTML = '
$mat2'\">Значение 2<br><br><br>

"

То есть JS код зависит, от работы php кода.

Если в переменных $mat1 или $mat2 просто текстовые данные, то все работает. А если внести двойную кавычку, даже экранированню (как в примере выше), то выходит такой html код:
Код HTML:
<input type="radio" name="type" value="1" checked onclick="document.getElementById('form_add').innerHTML = '\"1'">Значение 1<br>
 
<input type="radio" name="type" value="2" onclick="document.getElementById('form_add').innerHTML = '2'">Значение 2<br><br><br> 
В результате JS скрипт не работает. Как правильно экранировать двойные кавычки внутри JS скриптов, и как мне поступить в этом случае.

Последний раз редактировалось Revival001; 23.06.2010 в 21:25.
Revival001 вне форума Ответить с цитированием
Старый 23.06.2010, 22:04   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Как на счет одинарных кавычек?
А для РНР - есть функция специальная для этого дела.
Хотя, и для javascript есть нечто.
SkyM@n вне форума Ответить с цитированием
Старый 23.06.2010, 23:57   #3
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

Цитата:
Как на счет одинарных кавычек?
Не прокатило.
Цитата:
Хотя, и для javascript есть нечто.
За это спасибо, попробую.
UPD: Ничего не изменилось... Вообще цель не в том чтобы вывести кавычку. Цель в том, чтобы в случае нажатия на одну кнопку вылезла одна форма, а при нажатии на другой другая, а так как форма описывается html кодом, то просто заменять кавычки с помощью escape нельзя. Формы из первого поста убрал, чтобы не был лишнего кода и из-за этого видимо коряво сформулировал вопрос.

Последний раз редактировалось Revival001; 24.06.2010 в 09:29.
Revival001 вне форума Ответить с цитированием
Старый 24.06.2010, 18:54   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Если заменить кавычку на &quot; , то все будет выводиться (htmlspecialchars)

Последний раз редактировалось motorway; 24.06.2010 в 18:57.
motorway вне форума Ответить с цитированием
Старый 25.06.2010, 10:06   #5
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

Тоже пробовал, потом выводится не форма а сам её код
То есть допустим я хочу вывести это:
Код:
<span id="form_text">'.$saved_info.'</span><br>
<input class="form_notes_element" value="0" type="text" name="name" maxlength="9"><br><br>
<span id="form_notes_text">'.$price_info.'</span><br>
<input class="form_notes_element" type="text" name="name" maxlength\"9"><br><br>
А с использованием htmlspecialchars вылезает сам текст формы, а не сама форма.

Последний раз редактировалось Revival001; 25.06.2010 в 10:29.
Revival001 вне форума Ответить с цитированием
Старый 25.06.2010, 17:59   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

В htmlspecialchars надо брать только сами значения, которые нужно выводить, а не всё. И зачем там у вас одинарные кавычки около переменных с $?
motorway вне форума Ответить с цитированием
Старый 25.06.2010, 18:02   #7
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Цитата:
Сообщение от Revival001 Посмотреть сообщение
Тоже пробовал, потом выводится не форма а сам её код
То есть допустим я хочу вывести это:
Код:
<span id="form_text">'.$saved_info.'</span><br>
<input class="form_notes_element" value="0" type="text" name="name" maxlength="9"><br><br>
<span id="form_notes_text">'.$price_info.'</span><br>
<input class="form_notes_element" type="text" name="name" maxlength\"9"><br><br>
А с использованием htmlspecialchars вылезает сам текст формы, а не сама форма.
Попробуйте так
Код:
<span id="form_text"> <? echo "'".$saved_info."'"; ?></span><br>
<input class="form_notes_element" value="0" type="text" name="name" maxlength="9"><br><br>
<span id="form_notes_text"><?  echo "'".$price_info."'"; ?></span><br>
<input class="form_notes_element" type="text" name="name" maxlength\"9"><br><br>
PHP код:
$mat1="1"
$mat2="2";
echo 
'<input type="radio" name="type" value="1" checked onclick="document.getElementById(&quot;form_add&quot;).innerHTML =&quot;'.$mat1.'&quot;">Значение 1<br>

<input type="radio" name="type" value="2" onclick="document.getElementById(&quot;form_add&quot;).innerHTML = &quot;'
.$mat2.'&quot;">Значение 2<br><br><br>'

Последний раз редактировалось slips; 25.06.2010 в 18:18. Причина: редактирование
slips вне форума Ответить с цитированием
Старый 25.06.2010, 18:16   #8
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

Цитата:
Попробуйте так
Там кусок php скрипта, так что как я написал можно оставить.
там
Код:
echo '<span id="form_text">'.$saved_info.'....';
Цитата:
В htmlspecialchars надо брать только сами значения, которые нужно выводить, а не всё. И зачем там у вас одинарные кавычки около переменных с $?
В смысле значения переменных $mat1 и $mat2? Я так и делаю.
p.s. Уже замучился с этим.. Может кто-то напишет пример скрипта, который выводит различные формы\поля ввода, в зависимости о т выбранного радиобаттона. Я хочу сравнить и поискать ошибку.

Последний раз редактировалось Revival001; 25.06.2010 в 18:21.
Revival001 вне форума Ответить с цитированием
Старый 25.06.2010, 18:23   #9
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Цитата:
Сообщение от Revival001 Посмотреть сообщение
Там кусок php скрипта, так что как я написал можно оставить.
А вторую часть кода вы смотрели ?
Вот эту.
PHP код:
$mat1="1";  
$mat2="2"
echo 
'<input type="radio" name="type" value="1" checked onclick="document.getElementById(&quot;form_add&quot;).innerHTML =&quot;'.$mat1.'&quot;">Значение 1<br> 

<input type="radio" name="type" value="2" onclick="document.getElementById(&quot;form_add&quot;).innerHTML = &quot;'
.$mat2.'&quot;">Значение 2<br><br><br>'

Последний раз редактировалось slips; 25.06.2010 в 18:25. Причина: редактирование
slips вне форума Ответить с цитированием
Старый 25.06.2010, 18:35   #10
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

Да, смотрел не помогло
Revival001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экранирование кавычек в С Antoha Общие вопросы C/C++ 7 16.05.2010 21:02
Символ двойных кавычек Pr1meEX PHP 3 20.06.2009 21:39
Умоножение двойных слов на двойные слова.. AFA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 08.05.2009 01:39
Экранирование кавычек в Delphi kiber_punk Общие вопросы Delphi 7 29.12.2008 19:28
экранирование кавычек в C (аналог magic_quotes)? fis Общие вопросы C/C++ 1 26.06.2008 19:11