2014-01-18 2 views
0

может быть глупым вопросом, но, тем не менее, здесь он идет. У меня возникли трудности с преобразованием HTML-кода в обычный текст, который нужно просматривать предпочтительно внутри поля формы textarea, но div будет делать.Преобразование html-кода в обычный текст внутри div или textarea

Вот что я нашел:

HTML:

<div class="box-checkbox-color"> 

     <input type="checkbox" name="Color:_Green" id="sku0001-green" value="Yes" /> 
     <label for="sku0001-green"></label> 
     <div style="display:none;" title="#" class="rawHTML-code-insert">This is where I would like to display raw HTML code BUT have it rendered as plain text instead of being read as markup, essentially need it to be presented so it can be copied and pasted</div> 
    </div> 


<div class="box-checkbox-color"> 

     <input type="checkbox" name="Color:_Green2" id="sku0001-green2" value="Yes" /> 
     <label for="sku0001-green2"></label> 
     <div style="display:none;" title="#" class="rawHTML-code-insert">This is where I would like to display raw HTML code BUT have it rendered as plain text instead of being read as markup, essentially need it to be presented so it can be copied and pasted into a form field to be sent to another .php page</div> 
    </div> 


<ul class="result"></ul> 

Javascript:

$('input[type="checkbox"]').click(function(){ 
    var title = $(this).closest('.box-checkbox-color').find('.rawHTML-code-insert').html(); 
    // If the checkbox is checked, add the item to the ul. 
    if($(this).attr('checked')){ 
     var html = '<li title="' + title + '">' + title + '</li>'; 
     $('ul.result').append(html); 
    } else {  
     // if the checkbox is unchecked, remove the item from the ul. 
     $('li[title="' + title + '"]').remove(); 
    } 
}); 

Что мне нужно выполнить с этим, чтобы показать/генерировать определенный блок кода когда пользователь проверяет определенный флажок, но я хотел бы, чтобы этот код читался как код, а не был прочитан как разметка и выполнен как таковой. Точка - предоставить код, чтобы пользователи могли копировать и вставлять его, а также вносить изменения в имя div, id, values ​​и т. Д., Если они этого захотят. И, конечно, для каждого флажка будет отображаться другой код и быть перечисленным вместе в классе ul ниже. Я представил сценарий js, который должен иллюстрировать то, что мне нужно.

Я представил пример, о котором я говорю.

+0

Использование JQuery '.text()', чтобы поместить код в текстовое поле. – Barmar

+0

Вы бы так любезны показать это в jsfiddle. Я знаю, что это был хастл, но это заставит мою жену чувствовать себя лучше, lol. – WebEducate

ответ

0

Я добавил data-id атрибутов .rawHTML-code-insert элементов; они используются как идентификаторы элементов LI, поэтому их можно легко найти для удаления. Проблема с моей предыдущей скрипкой заключалась в том, что специальные символы в названии вызывали беспорядок в селекторе [title="'+title+'"]'.

HTML:

<div class="box-checkbox-color"> 

    <input type="checkbox" name="Color:_Green" id="sku0001-green" value="Yes" /> 
    <label for="sku0001-green"></label> 
    <div style="display:none;" title="#" class="rawHTML-code-insert" data-id="html1">This is where I would like to display raw <b>HTML</b> code BUT have it rendered as plain text instead of being read as markup, essentially need it to be presented so it can be copied and pasted</div> 
    </div> 


<div class="box-checkbox-color"> 

    <input type="checkbox" name="Color:_Green2" id="sku0001-green2" value="Yes" /> 
    <label for="sku0001-green2"></label> 
    <div style="display:none;" title="#" class="rawHTML-code-insert" data-id="html2">This is where I would like to display raw HTML code BUT have it rendered as plain text instead of being read as markup, essentially need it to be presented so it can be copied and pasted into a form field to be sent to another .php page</div> 
</div> 

<ul class="result"></ul> 

JS:

$('input[type="checkbox"]').click(function(){ 
    var el = $(this).closest('.box-checkbox-color').find('.rawHTML-code-insert'); 
    var title = el.html(); 
    var id = el.data('id'); 
    // If the checkbox is checked, add the item to the ul. 
    if($(this).is(':checked')){ 
     var html = $("<li/>", { 
      title: title, 
      text: title, 
      id: id 
     }); 
     $('ul.result').append(html); 
    } else {  
     // if the checkbox is unchecked, remove the item from the ul. 
     $('li#' + id).remove(); 
    } 
}); 

DEMO

+0

текст не удаляется после снятия флажка, кажется, что какие-либо скобки препятствуют его удалению, какие-то мысли по этому поводу? – WebEducate

+0

Смотрите новую версию. Мне пришлось обновить версию jQuery в скрипке, потому что я использую некоторые методы, которых не было в 1.4. – Barmar

+0

Ницца, его удивительный брат. Бесконечно благодарен. – WebEducate

0

Вам необходимо заменить сохраненные символы html на их escape-последовательности. Here - хороший документ. jQuery's text(str) должен сделать это за вас.

+0

это здорово для будущей справки, спасибо. – WebEducate

0

Вы используете &lt; вместо < и &gt; вместо >. вот пример для преобразования HTML-код в обычный текст

HTML

<div class="box-checkbox-color"> 

     <input type="checkbox" name="Color:_Green" id="sku0001-green" value="Yes" /> 
     <label for="sku0001-green"></label> 
     <div style="display:none;" title="#" class="rawHTML-code-insert">&lt;div class="box-checkbox-color"&gt; 

     &lt;input type="checkbox" name="Color:_Green" id="sku0001-green" value="Yes" /&gt; 
     &lt;label for="sku0001-green"&gt;&lt;/label&gt; 
    &lt;/div&gt;</div> 
    </div> 


<div class="box-checkbox-color"> 

     <input type="checkbox" name="Color:_Green2" id="sku0001-green2" value="Yes" /> 
     <label for="sku0001-green2"></label> 
     <div style="display:none;" title="#" class="rawHTML-code-insert">&lt;div class="box-checkbox-color"&gt; 

     &lt;input type="checkbox" name="Color:_Green" id="sku0001-green" value="Yes" /&gt; 
     &lt;label for="sku0001-green"&gt;&lt;/label&gt; 
    &lt;/div&gt;</div> 
    </div> 


<ul class="result"></ul> 

JS

$('input[type="checkbox"]').click(function(){ 
var title = $(this).closest('.box-checkbox-color').find('.rawHTML-code-insert').html(); 
// If the checkbox is checked, add the item to the ul. 
if($(this).attr('checked')){ 
    var html = '<li title="' + title + '">' + title + '</li>'; 
    $('ul.result').append(html); 
} else {  
    var html = ''; 
    $('ul.result').html(html); 
} 

});

здесь fiddle

я надеюсь, что это может помочь вам.

+0

Здесь же, удаление текста после снятия флажка не работает. как это исправить? – WebEducate

+0

@ user3204638 здесь обновляется скрипка http://jsfiddle.net/ek2zh/149/ исправлена ​​проблема –

+0

приятно, что работает, большое спасибо, приятно узнать, что вы, ребята, здесь помогаете начинающим программистам. Благодаря миллиону – WebEducate

0

Попробуйте ниже сценарий будет решить вашу цель

$(document).ready(function(){ 
$('input[type="checkbox"]').click(function(){ 

    var title = $(this).closest('.box-checkbox-color').find('.rawHTML-code-insert').html(); 
    //alert(title); 
    // If the checkbox is checked, add the item to the ul. 

    if($(this).is(':checked')){ //this is correct way to check 
     alert(title); 
     var html = '<li title="' + title + '">' + title + '</li>'; 
     $('ul.result').append(html); 
    } else {  
     // if the checkbox is unchecked, remove the item from the ul. 
     $('li[title="' + title + '"]').remove(); 
    } 
}); 
}); 

ошибка

а) Код не упоминается в готовом случае

б) способ проверки Jquery флажок неверен

Смежные вопросы