Necesidad de la solución Pure / jQuery Javascript para limpiar el HTML de las palabras del área de texto

Sé que este tema se ha abordado aquí, pero aún no he encontrado una solución viable para mi situación, por lo que me gustaría que el cerebro vuelva a confiar en el trabajo y vea qué se puede hacer.

Tengo un área de texto en un formulario que necesita detectar cuando algo está pegado en él, y limpiar cualquier HTML oculto y entre comillas. El contenido de este formulario se envía por correo electrónico a un sistema de terceros que es particularmente malicioso, por lo que a veces incluso la encoding de los caracteres de la entidad html no será una apuesta segura.

Lamentablemente, no puedo usar algo como FCKEditor, TinyMCE, etc., tiene que ser un área de texto regular en esta instancia. Intenté diseccionar la pasta de FCKEditor de la función de palabras, pero no he tenido suerte para rastrearla.

Sin embargo, puedo usar la biblioteca jQuery si es necesario, pero aún no he encontrado un complemento jQuery para esto.

Estoy específicamente buscando información orientada a limpiar la información pegada, no cómo controlar el elemento para cambiar el contenido.

Cualquier ayuda constructiva sería muy apreciada.

Estoy viendo la respuesta de David Archer y él prácticamente la responde. He utilizado en el pasado una solución similar a la suya:

$("textarea").change( function() { // convert any opening and closing braces to their HTML encoded equivalent. 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); }); 

Si está buscando una manera de eliminar completamente las tags 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); }); 

Puede ver Word HTML Cleaner de Connor McKay. Es un limpiador bastante fuerte, ya que elimina muchas cosas que podrías querer conservar, pero si eso no es un problema, parece bastante decente.

¿Qué tal algo así?

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

Luego solo use el detector de eventos para llamar a esta función y pasar la cadena pegada.

Podría ser útil usar el evento de desenfoque que se activaría con menos frecuencia:

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

Editado desde los documentos jquery ..

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

Eso es para detectar los cambios. La limpieza probablemente sea una especie de expresión regular

editado arriba para buscar un área de texto no un cuadro de texto