2015-01-27 2 views
0

Я осмотрелся, но не могу найти ответ на это решение.Удалите HTML из атрибута data- *, оставив новые строки

Есть ли все-таки вычеркнуть HTML-теги из поля textarea, оставив разрывы строк, через атрибут data- *?

Мой код до сих пор: http://jsfiddle.net/xymvcLcv/

Я был в состоянии заменить новые линии с <br> с, но не в состоянии работать, как и удалить любой HTML пользователь помещает в ...

.replace(/\n/g, '<br/>')

ответ

1

Для Газа HTML и получить только текст, вы можете использовать

function stripHTML(html){ 
    var root = document.implementation.createHTMLDocument().body; 
    root.innerHTML = html; 
    return root.textContent; 
} 

Чтобы сохранить символы новой строки, используйте white-space CSS свойство:

white-space: pre; /* preserve newlines, preserve spaces, don't wrap text */ 
white-space: pre-wrap; /* preserve newlines, preserve spaces, wrap text */ 
white-space: pre-line; /* preserve newlines, collapse spaces, wrap text */ 
+0

Как бы вы объединили функцию так, чтобы она использовалась при использовании JS? – potts

+1

@potts [demo] (http://jsfiddle.net/xymvcLcv/2/) – Oriol

+0

А теперь я понял! В любом случае использовать данные- * в качестве исходного кода при сохранении использования функции? Еще раз спасибо! В любом случае вы очень помогли – potts

0
.replace(/<[^>]*>/g, '').replace(/<|>/g, '').replace('&', '&amp;').replace(/\n/g, '<br>') 

Важно, чтобы удалить HTML, прежде чем добавлять свои собственные.

Если вы делаете что-либо, но отображаете это в своем браузере после его ввода (то есть, храните его в БД), убедитесь, что вы тоже дезинфицируете его на заднем плане! Валидация на стороне клиента легко обойти.

+0

Это по существу «Предварительный просмотр, перед тем, подавшее заявку «Бэкэнд определенно имеет все проверки :-) – potts