Estoy tratando de obtener el valor de un correo no deseado modificado por el usuario (usando contenteditable), a través de su clase. El spam está dentro de un <td> en una tabla.
Intenté let newItemName = $(variantId).children(".item-description").text(); y también let newItemName = $(variantId).find('span.item-description').text(); que ambos devuelven una cadena vacía a la variable newItemName .
¿Alguna idea de por qué obtengo una cadena vacía en lugar de la entrada de los usuarios?
Este es mi JS:
let variantId; $(document).on('click', ".tbl-itemClass", function () { variantId = $(this).attr('id'); $(variantId).prop('contenteditable', true); }). on('input', function () { //let newItemName = $(variantId).children(".item-description").text(); let newItemName = $(variantId).find('span.item-description').text(); });Este es mi .csHtml (no creas que hace la diferencia, estoy usando la página de afeitar, Asp.Net)
<tbody> @foreach (var item in Model) { <tr currentitemid=" @item.Id"> <td class="tbl-itemClass desc" id="@("description"+ item.Id)" varianttype="@ViewBag.VariantType" > <span class="spnSpc"> </span> <span style="width:90%; padding:1px 5px 1px 2px;" **class="item-description"** contenteditable> @item.Description </span> </td> <td class="tbl-itemClass ">//more code here </td> </tr> } El valor @item.Description es un color (es decir, 'rojo'). Cuando el usuario cambia ese valor (es decir, 'redX'), este código se ejecuta, pero devuelve una cadena vacía en lugar de 'redX'. ¡Gracias!
Vuelve a seleccionar el elemento con la variable variantId . Pero eso es solo una cadena y no seleccionará el elemento, porque la cadena no contiene el # al seleccionar elementos con una identificación.
variantId = '#'+$(this).attr('id'); Ahora variantId será #+your_id