Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > onchange="функция(параметр_С_КАВЫЧКАМИ)" |
Автор: Cyclone 25.3.2010, 16:18 | ||
Доброго дня. На JSP странице имеется <select>. На событии onchange вызывается функция с параметрами:
${property.name} - EL expression. Если оно содержит в себе стоковое значение с кавычками, то функцию вызвать не удаётся. Различные вариации на тему escape() и encodeURIComponent() в onchange="" вызвать не удаётся. Подскажите, пожалуйста, решение. Спасибо. |
Автор: skyboy 25.3.2010, 16:33 | ||
при чем тут javascript? проблема была бы и в том случае, если бы ты хотел получить html/xml структуру:
тебе надо в JSP заэкранировать кавычки в значении property.name(добавить слеш перед кавычками: " -> \") |
Автор: Cyclone 25.3.2010, 17:09 | ||||
Собственно, экранировать на JSP/javascript frontend и пытаюсь. На мой взгляд проблемы бы не возникло, если бы escape() можно было вызывать в onchange:
Однако такая конструкция не срабатывает. В плане передачи сторокового параметра с кавычками в принципе работает овт такая некрасивая штука:
Но так как всё это находится в forEach, то есть выполнется для каждого элемента list'а, пришедшего с сервера, в функцию foo() каждый раз попадает одна и та же переменная escapedName (последняя в forEach) - тоже не вариант. |
Автор: Cyclone 25.3.2010, 17:46 | ||
Спасибо большое... Кажется, мне подходит следующий код:
Недостатоков на первый взгляд не выявлено. |
Автор: skyboy 25.3.2010, 18:13 |
пометь вопрос решенным. |
Автор: Cyclone 25.3.2010, 19:13 |
Честно говоря, мне верится, что существует более человеческое решение... Не всегда же есть возможность использовать JSTL. |
Автор: skyboy 25.3.2010, 20:39 |
в смысле, без циклов и вызовов фунцкий? а откуда тогда возьмется вставка сторонних данных? в любом случае, продолжать поиск лучше в разделе JSP. |
Автор: IDVsbruck 26.3.2010, 15:30 |
Не согласен. Вопрос по существу. Просто не обязательно выкладывать jsp-код (сам сильно сержусь, когда всовывают в этот раздел ПэХаПэ-код), хотя для понимания дела это все-таки пришлось бы делать. Так что вопрос имеет место быть. Думаю, твою проблему может решить вынос функции в <script></script> раздел, где не будет таких сложностей с экранированием кавычек. То есть инициализируем переменную, значение которой устанавливается прекомпилятором с помощью JSTL, а дальше в функции работаем с этой переменной. Дальше javascript сам разберется с экранированием. Код предлагать не буду, так как и так все понятно. |