Обработка спецсимволов в option
Столкнулся с ситуацией:
В список select загружаются данные через Ajax и создание объекта Option (весь код классический из учебников). Данные забираются из базы с кавычками вида "e; Вопрос - почему процессор браузера не отрабатывает это как кавычки, а показывает также - "e?:-/ |
"e; в атрибуте value или в самом теге?
|
<option ... value="">text</option>
в text = Команда "Динамо" Использую 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); |
Двойные кавычки нужно экранировать только в атрибутах, подумайте почему, и подобных проблем больше не будет.
|
Спасибо за быструю реакцию на вопрос.
Про то зачем нужно экранировать - знаю. Сам баловался этим:) Я не специально, что-то экранирую. Так забирается из базы - к примеру форума на phpBB. Понятно, что на сервере можно поменять &qout обратно на ", но в других элементах страницы эти " отображаются как надо, да и в select при перегрузки страницы всё нормально. Проблема вылазит только при подгрузки через Ajax. Именно процессор браузера не обрабатывает разметку при Ajax и создании/добавлении объекта Option (хотя при перезагрузки страницы обрабатывает). Как обойти стороной эту ситуацию способов конечно много. Хотелось бы понять почему так происходит. Зы: вообще то это не экранирование |
Часовой пояс GMT +3, время: 04:12. |