Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Обработка спецсимволов в option (https://javascript.ru/forum/dom-window/6944-obrabotka-specsimvolov-v-option.html)

Дядька 07.01.2010 10:38

Обработка спецсимволов в option
 
Столкнулся с ситуацией:
В список select загружаются данные через Ajax и создание объекта Option (весь код классический из учебников).
Данные забираются из базы с кавычками вида &quote;
Вопрос - почему процессор браузера не отрабатывает это как кавычки, а показывает также - &quote?:-/

Riim 07.01.2010 10:42

&quote; в атрибуте value или в самом теге?

Дядька 07.01.2010 10:47

<option ... value="">text</option>
в text = Команда &quot;Динамо&quot;

Использую Jquery
Код из учебника
(function($) {
//Функция очистки селекта
$.fn.emptySelect = function() {
return this.each(function(){
if (this.tagName=='SELECT') this.options.length = 0;
});
}

//Функция загрузки селекта
$.fn.loadSelect = function(optionsDataArray) {
return this.emptySelect().each(function(){
if (this.tagName=='SELECT') {
var selectElement = this;
$.each(optionsDataArray,function(index,optionData) {
var option = new Option(optionData[1],
optionData[0]);

if ($.browser.msie) {
selectElement.add(option);
}
else {
selectElement.add(option,null);
}
if(!optionData[0])
{
option.disabled='disabled';
$(option).addClass('disabled-option');
}
});
}
});
}
})(jQuery);

Riim 07.01.2010 10:54

Двойные кавычки нужно экранировать только в атрибутах, подумайте почему, и подобных проблем больше не будет.

Дядька 07.01.2010 11:03

Спасибо за быструю реакцию на вопрос.
Про то зачем нужно экранировать - знаю. Сам баловался этим:)
Я не специально, что-то экранирую.
Так забирается из базы - к примеру форума на phpBB.
Понятно, что на сервере можно поменять &qout обратно на ", но
в других элементах страницы эти &quot отображаются как надо, да и в select при перегрузки страницы всё нормально.
Проблема вылазит только при подгрузки через Ajax. Именно процессор браузера не обрабатывает разметку при Ajax и создании/добавлении объекта Option (хотя при перезагрузки страницы обрабатывает).
Как обойти стороной эту ситуацию способов конечно много.
Хотелось бы понять почему так происходит.

Зы: вообще то это не экранирование


Часовой пояс GMT +3, время: 04:12.