[英]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, '<').replace(/>/gi, '>');
// 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.