簡體   English   中英

需要Pure / jQuery Javascript解決方案從文本區域清除Word HTML

[英]Need Pure/jQuery Javascript Solution For Cleaning Word HTML From Text Area

我知道這個問題已在這里觸及,但我還沒有找到適合我情況的可行解決方案,所以我想,但大腦信任回來工作,看看可以做些什么。

我有一個表單中的textarea需要檢測何時粘貼到其中,並清除任何隱藏的HTML和引號。 這個表單的內容通過電子郵件發送到第三方系統,這是特別討厭的,所以有時甚至將它編碼為html實體字符不是一個安全的賭注。

遺憾的是我不能使用像FCKEditor,TinyMCE等那樣的東西,在這種情況下它必須保持常規的textarea。 我試圖從單詞函數中解析FCKEditor的粘貼,但沒有運氣跟蹤它。

然而,如果需要,我可以使用jQuery庫,但還沒有找到一個jQuery插件。

我專門尋找用於清理粘貼信息的信息,而不是如何監視元素以更改內容。

任何建設性的幫助將不勝感激。

我正在看David Archer的回答,他幾乎都回答了這個問題。 我過去曾使用類似於他的解決方案:

$("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);
});

您可以查看Connor McKay的Word HTML Cleaner 它是一個相當強大的清潔工,因為它刪除了許多你可能想要保留的東西,但如果這不是問題,它看起來相當不錯。

這樣的事情怎么樣:

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;
}

然后只需使用事件監聽器來調用此函數並傳入粘貼的字符串。

使用較少觸發的模糊事件可能很有用:

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

從jquery docs編輯..

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

這是為了檢測變化。 清潔可能是各種各樣的正則表達

在上面編輯,尋找textarea而不是文本框

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM