Специальные символы, декодированные в моем текстовом поле (с помощью редактируемого плагина jQuery) - PullRequest
2 голосов
/ 22 июля 2010

Я пытаюсь использовать Jeditable для редактирования встроенного содержимого, помещаемого в текстовые поля. Итак, я называю файлы скриптов:

<script src="js/jquery.jeditable.js"></script>
<script src="js/jquery.jeditable.autogrow.js"></script>
<script src="js/jquery.autogrow.js"></script>

Тогда у меня есть функция, которая должна отправлять данные на сервер (я сохранил пример URL). Эта функция создает текстовую область и разрешает издание:

$(".autogrow").editable("http://www.appelsiini.net/projects/jeditable/php/save.php", { 
 indicator : "<img src='img/indicator.gif'>",
 type      : "autogrow",
 submit    : 'OK',
 cancel    : 'cancel',
 tooltip   : "Click to edit...",
 onblur    : "ignore",
 event   : "dblclick",
 autogrow : {
  lineHeight : 16,
  minHeight  : 32
 }
});

Затем у меня есть данные для редактирования, которые содержат теги HTML, потому что я должен хранить их:

$data = '<div style="color:red">Foo Bar</div>';
echo '<div class="autogrow">'.htmlentities($data).'</div>';

«echo» прекрасно отображает содержимое «$ data» с тегами, но когда я хочу редактировать встроенный DIV, создается текстовая область, и в этой текстовой области отображаются следующие данные:

&lt;div style="color:red"&gt;Foo Bar&lt;div&gt;

вместо:

<div style="color:red">Foo Bar</div>

Как я могу отобразить правильные символы?

Ответы [ 2 ]

0 голосов
/ 10 марта 2015

Просто отредактируйте этот файл js / jquery.jeditable.js
, перейдите к строке №: 398 $ .editable {} и добавьте строку, как показано ниже:

$.editable = {
        types: {
            defaults: {
                element : function(settings, original) {
                    var input = $('<input type="hidden"></input>'); 
                    $(this).append(input);
                    return(input);
                },
                content : function(string, settings, original) {
                    string = $('<div/>').html(string).text(); // <--- Add this line                
                    $(':input:first', this).val(string);
                },

Спасибо

0 голосов
/ 07 октября 2010

Редактировать: Я не знал, что этот вопрос был задан более 2 месяцев назад - Извините

Вы пытались использовать функцию html_entity_decode(), когда помещали текст в текстовую область?

Функция htmlentities() изменит такие вещи, как < на &lt;, в то время как html_entity_decode() должна изменить &lt; на <

В основном текстовая область не будет форматировать ваши HTML-теги, поэтому вам нужно конвертировать их самостоятельно.

Однако с тех пор, как я использовал PHP, прошло много времени, поэтому я не могу вспомнить слишком хорошо.

...