Вопрос по html, jquery, javascript – Нужно Pure / JQuery Javascript Решение для очистки Word HTML из текстовой области

2

Я знаю, что этот вопрос был затронут здесь, но я пока не нашел жизнеспособного решения для моей ситуации, поэтому я хотел бы, чтобы мозг вернул работу и посмотрел, что можно сделать.

У меня есть текстовая область в форме, которая должна определить, когда что-то вставлено в нее, и очистить любой скрытый HTML & amp; кавычки. Содержимое этой формы отправляется по электронной почте в стороннюю систему, которая является особенно стервозной, поэтому иногда даже кодирование ее в символы html-сущности не является безопасной ставкой.

К сожалению, я не могу использовать что-то вроде FCKEditor, TinyMCE и т. Д., В этом случае он должен оставаться обычной текстовой областью. Я пытался разобрать вставку FCKEditor из функции word, но мне не повезло отследить ее.

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

Я специально ищу информацию, направленную на очистку вставленной информации, а не на то, как контролировать элемент на предмет изменения контента.

Любая конструктивная помощь будет принята с благодарностью.

Ваш Ответ

5   ответов
0

Отредактировано из документов JQuery ..

$("textarea").change( function() {
    // check input ($(this).val()) for validity here
});

Это для обнаружения изменений. Чистая, вероятно, будет своего рода регулярное выражение

отредактировано выше, чтобы искать текстовую область, а не текстовое поле

Error: User Rate Limit Exceeded
8

Я смотрю на ответ Дэвида Арчера, и он в значительной степени отвечает на него. Я использовал в прошлом решение, подобное его:

$("textarea").change( function() {
    // convert any opening and closing braces to their HTML encoded equivalent.
    var strClean = $(this).val().replace(/</gi, '&lt;').replace(/>/gi, '&gt;');

    // Remove any double and single quotation marks.
    strClean = strClean.replace(/"/gi, '').replace(/'/gi, '');

    // put the data back in.
    $(this).val(strClean);
});

Если вы ищете способ полностью удалить HTML-теги

$("textarea").change( function() {
    // Completely strips tags.  Taken from Prototype library.
    var strClean = $(this).val().replace(/<\/?[^>]+>/gi, '');

    // Remove any double and single quotation marks.
    strClean = strClean.replace(/"/gi, '').replace(/'/gi, '');

    // put the data back in.
    $(this).val(strClean);
});
Error: User Rate Limit Exceeded
1

Может быть полезно использовать событие размытия, которое будет вызываться реже:

$("textarea").blur(function() {
    // check input ($(this).val()) for validity here
});
5

Вы можете проверитьWord HTML Cleaner Коннор Маккей. Это довольно сильный очиститель, поскольку он удаляет много вещей, которые вы, возможно, захотите сохранить, но если это не проблема, это выглядит довольно прилично.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededjhy.io/tools/convert-word-to-plain-text
1

Как насчет чего-то вроде этого:

function cleanHTML(pastedString) {
    var cleanString = "";
    var insideTag = false;
    for (var i = 0, var len = pastedString.length; i < len; i++) {
        if (pastedString.charAt(i) == "<") insideTag = true;
        if (pastedString.charAt(i) == ">") {
            if (pastedString.charAt(i+1) != "<") {
                insideTag = false;
                i++;
            }
        }
        if (!insideTag) cleanString += pastedString.charAt(i);
    }
    return cleanString;
}

Затем просто используйте прослушиватель событий для вызова этой функции и передачи вставленной строки.

Error: User Rate Limit Exceeded

Похожие вопросы