2009-06-24 8 views
2

私はこの問題がここで触れられていることは知っていますが、私の状況では実行可能な解決策はまだ見つかりませんでした。仕事をして何ができるかを見てください。WordのHTMLをテキストエリアから消去するには、純粋な/ jQueryのJavascriptソリューションが必要です

何かが貼り付けられたときに検出する必要がある形式のテキストエリアがあり、隠しHTML &の引用符を取り除く必要があります。このフォームの内容は、特に馬鹿馬鹿しい第三者システムに電子メールで送られてきているので、htmlエンティティ文字にエンコードすることさえ安全な賭けにならないことがあります。

残念ながら、FCKEditor、TinyMCEなどのようなものは使用できません。このインスタンスでは、通常のテキストエリアを維持する必要があります。私は単語機能からFCKEditorのペーストを解読しようとしましたが、それを追跡する運がなかった。

ただし、必要に応じてjQueryライブラリを使用することはできますが、これについてはまだ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

0

..

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

ザッツ変化を検出するため。

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のないこのようなものについてのテキストボックス

+0

私はテキストエリアに貼り付けアクションを監視する方法に精通んだけど、私は本当にを行うにはより多くのものが必要実際にコンテンツを消去します。しかし、ありがとう。 – User

1

何を探すために、上記に編集種類

の正規表現になります貼り付けられた文字列を渡します。

+0

htmlコメントで一致しない< or >記号がある場合でもそれは機能しますか? – Nosredna

5

を削除する方法を探している場合は、コナーマッケイによるWord HTML Cleanerをチェックアウトすることができます。それはあなたが保持したいかもしれないたくさんのものを取り除くので、かなり強力なクリーナーですが、それが問題ではない場合、それはかなりまともなようです。

+0

これは明らかに私が見つけた最高のものです)ありがとうTim! –

+0

改行とその他の重要なフォーマットは次のとおりです:http://jhy.io/tools/convert-word-to-plain-text – degenerate

1

あまり頻繁にトリガーされるblurイベントを使用すると便利かもしれません:

$("textarea").blur(function() { 
    // check input ($(this).val()) for validity here 
}); 
関連する問題