Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

501
Vistas
JQuery: compruebe si TinyMCE contiene una cadena

Perdón por la extensión del post, traté de mantenerlo lo más corto y claro posible. Sin embargo, estoy seguro de que la solución es bastante simple.

tengo una mesa:

 <table> <tr> <td class="title">John</td> <td class="content"><p>John is a nice guy</p></td> </tr> <tr> <td class="title">Mary</td> <td class="content"><p>Mary is a nice girl</p></td> </tr> </table>

Al hacer clic en una celda de la primera columna, quiero que el contenido de la segunda columna se agregue a un editor visual de TinyMCE. Así que agregué el siguiente código, que funciona perfectamente:

 $("td.title").on("click", function () { var thisRow = $(this).parents("tr"); var columnContent = $(thisRow).find(".content").html(); var tinyID = $(".acf-field-61dc2a9a0fefd").find("textarea").attr("id"); var tinyField = tinyMCE.editors[tinyID]; var tinyContent = tinyField.getContent(); tinyField.setContent(columnContent); });

Ahora, al hacer clic nuevamente en la primera columna, quiero que el contenido de la segunda columna se elimine de tinyMCE (si existe y no se ha modificado, por supuesto), de esa manera la primera columna funciona como un botón de alternar. Así que modifiqué la función:

 if ( tinyContent.indexOf(columnContent) > -1 ) { tinyField.setContent(''); } else { tinyField.setContent(columnContent); }

Sin embargo, no hay absolutamente ninguna manera de hacer que esto funcione. Agrega el contenido, no hay problema, pero no lo elimina después de hacer clic nuevamente.

si reemplazo

 if ( tinyContent.indexOf(columnContent) > -1 ) {

por

 if ( tinyContent.indexOf('John is a nice guy') > -1 ) {

funcionará bien. Al hacer clic en John, se agregará "John es un buen tipo" en el tinyMCE, y al hacer clic nuevamente en John, se eliminará "John es un buen tipo".

Mi intuición fue que tiene algo que ver con el formato del contenido (html o texto), así que probé modificando las variables, por ejemplo:

 var columnContent = $(thisRow).find(".content").text(); var tinyContent = tinyField.getContent({format: 'text'});

Intenté muchas combinaciones, pero sin éxito. Realmente me frustra porque la función funcionó bien cuando el campo era un área de texto en lugar de un TinyMCE.

Gracias de antemano por cualquier aporte que pueda tener.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda