2009-06-24 88 views
2

我知道這個問題已經在這裏被觸及,但我還沒有找到一個可行的解決方案,我的情況呢,所以我想但只有大腦相信回到工作,看看能做些什麼。需要純文本/ jQuery JavaScript解決方案從文本區域清除Word HTML

我有一個textarea的形式,需要檢測什麼時候粘貼到它,並清除任何隱藏的HTML &引號。這個表格的內容通過電子郵件發送到第三方系統,該系統特別拙劣,所以有時甚至將它編碼爲html實體字符也不是一個安全的選擇。

不幸的是我不能使用像FCKEditor,TinyMCE等等,它必須在這個例子中保持一個常規的textarea。我試圖從word函數中解析FCKEditor的粘貼,但沒有運氣跟蹤它。

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

我特別在尋找適合清潔粘貼信息的信息,而不是如何監控內容變化的元素。

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

回答

8

我在看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); 
}); 
+0

我希望我知道RegEx,所以我可以寫出如此簡單的溶劑(: – peirix 2009-06-24 14:05:30

0

從jQuery文檔編輯..

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

那用於檢測的變化。清潔很可能是各種各樣

上面編輯,以尋找一個textarea不是一個文本框

+0

我熟悉如何監視粘貼動作到textarea的,但我真的需要更多的事做實際上清理內容。不過謝謝。 – User 2009-06-24 13:06:25

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

然後,只需使用該事件偵聽器調用這個函數並傳入粘貼的字符串。

+0

如果html註釋中有無與倫比的< or >符號,那麼這樣做是否仍然有效? – Nosredna 2009-06-24 14:06:10

5

您可以通過康納麥凱退房Word HTML Cleaner。這是一個非常強大的清潔工,因爲它可以清除很多可能需要保留的東西,但如果這不是問題,它看起來相當不錯。

+0

這個明顯是我找到的最好的一個!謝謝蒂姆! – 2011-01-17 15:47:03

1

這可能是使用這將是不經常觸發blur事件有用:

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