Jeditable está insertando espacios adicionales alrededor del texto real en un área de texto cuando hago clic para editar texto. ¿Cómo recorto esto o realmente arreglo esto?Jeditable inserta espacios adicionales alrededor del texto en el área de texto
Respuesta
En realidad, puede pasar una función para recortar la cadena que va a editar. Utilizar esto en su configuración:
data : function(string) {return $.trim(string)},
submit: "Save"
Hmm, eso es extraño. No estoy teniendo ese problema con Jeditable.
Bueno, jQuery tiene una función de ajuste:
$.trim(" hello, how are you? ");
encontrado la razón. ¡Y es una locura!
En lugar de edición se inserte el espacio alrededor del texto si html se ve como después de
<div id="inplace_edit_this">
This is some text that will be edited in-place.
</div>
Y lo hará NO espacio de inserción en todo el texto si su html tiene este aspecto
<div id="inplace_edit_this">This is some text that will be edited in-place.</div>
Me pregunto qué causa esto. Esto es probablemente debido a la diferencia en las formas en que el navegador y Javascript interpretan el HTML.
... no causa raíz fijo de emisión, la propuesta de Symmitchry fija así – dmytrivv
... pero esto _es_ la respuesta si no lo hará, o no puede, cambiar jEditable.js – w4ik
Estoy de acuerdo con dmytrivv. La pregunta nunca especificó que jEditable no se puede cambiar. Intenté la solución anterior, y todavía tengo un espacio al principio. Las soluciones de Johan Bjorling y Symmitchry funcionan todo el tiempo. – ksindi
Esto podría ser una noticia antigua, pero me enfrenté a un problema similar: todavía no sé por qué, pero después de guardar un texto editado, la siguiente vez que hice clic en él, 11 espacios (cada vez) insertado antes del texto editable.
Después de mucho ensayo y error, finalmente resuelto este problema mediante la edición de la línea de ~ 239 en el archivo jeditable.js:
content.apply(form, [input_content, settings, self]);
y lo reemplazó con:
content.apply(form, [$.trim(input_content), settings, self]);
(Per sugerencia de Baloneysammitch)
Ten en cuenta que no tengo ni idea de lo que estoy haciendo, pero parece que funcionó. Tal vez alguien con más habilidad que yo podría explicar de dónde podrían venir esos 11 espacios extra ...
¡Gracias, esto me solucionó el mismo problema! En caso de que usted (o cualquier otra persona) se encuentre con este mismo problema con el texto de edición previa que se encuentra en self.revert, hice el mismo cambio en la línea 260 más o menos, $ .trim() ing el valor que self.revert es establecido en, y que solucionó mi problema de espacio en blanco de valor original. – Aaron
Realmente debería usar el método de Greg DeVore: http://stackoverflow.com/a/9087222/76672 Sin actualizar el archivo core jeditable. – Jake
Ha pasado un tiempo desde que alguien respondió a esta publicación, pero me encontré con el mismo problema y pensé en agregar mis dos centavos vale la pena. Este problema solo ocurrió para mí en Firefox y Safari. IE y Chrome no parecen tener este problema.
Probé la sugerencia de Symmitchry del $.trim()
en la línea 239 y esto no funcionó para mí. Así que hice una vuelta hacia atrás y la cuenta de que el problema está apareciendo por primera vez alrededor de la línea 176 con la línea:
self.revert = $(self).html();
Dado que esta es una llamada jQuery, que me hace pensar que hay un problema con la forma en jQuery es interactuando con los navegadores mencionados anteriormente. No estoy seguro ...
Encontré que al agregar un $.trim()
en este punto las cosas funcionaron como esperaba.
Encontré que Chirantan hizo que la forma en que se presentaba el htm hiciera una diferencia en si los espacios estaban allí o no.
He solucionado este problema con JEditable 1.7.1 en mi aplicación.La solución es prácticamente idéntica a la de Symmitchry.
A partir de la fila 204 hay un bloque de código que determina cómo JEditable debe cargar sus datos.
/* set input content via POST, GET, given data or existing value */
var input_content;
if (settings.loadurl) {
...
} else if (settings.data) {
...
} else {
...
}
content.apply(form, [input_content, settings, self]);
Añadir jQuery ajuste del funcionamiento antes de la última fila (fila 239 en mi versión)) por lo que se obtiene:
/* set input content via POST, GET, given data or existing value */
var input_content;
if (settings.loadurl) {
...
} else if (settings.data) {
...
} else {
...
}
try {
input_content = input_content.trim();
}
catch(e) {
// DO NOTHING
}
content.apply(form, [input_content, settings, self]);
La razón por la que lo puse en un try-catch es porque cuando se usa JEditable con textarea o entrada de tipo texto input_content es básicamente una cadena. Cuando usa un contenido de entrada de selección, es un objeto y no responderá bien al recorte.
Probablemente haya una forma más hermosa de hacer esto, en lugar de usar un try-catch, pero hace el trabajo bien.
Esto sucede si el formato ha adjudicar los espacios. jEditable lo trata con respeto y no modifica su contenido ... por ejemplo, en el formato automático VS IDE se crean enormes lagunas en las que el renderizado de HTML está bien.
SI usando jQuery simplemente recortar el DOM antes de llamar jEditable si desea ot asegurarse de que la hay espacios en blanco en cualquier lugar
$('#BatchTable tbody td').each(function() {
$(this).html($.trim($(this).html()));
});
oTable = $('#BatchTable').dataTable({
"bJQueryUI": true
});
En mi caso, la solución fue eliminar la </input>
en la línea 390 en el archivo jQuery. jeditable.js. línea antes: var input = $('<input type="hidden"></input>');
línea que funciona para mí: var input = $('<input type="hidden">');
- 1. tinymce.selection.setContent inserta el texto al comienzo del área de texto en IE
- 2. Editar sugerencia de texto muestra espacios adicionales cuando inputType = "textpassword"
- 3. ancho de cuadro de texto jeditable
- 4. Reemplazar el texto seleccionado en el área de texto
- 5. Reducir el relleno alrededor del texto en el botón WinForms
- 6. jQuery ajustar el texto seleccionado en un área de texto
- 7. Calcular el tamaño del texto de acuerdo con el ancho del área de texto
- 8. Cambiar la fuente del área de texto
- 9. cada línea del área de texto
- 10. Copie el texto del área seleccionada en el portapapeles
- 11. Android dibuja un círculo alrededor del texto
- 12. ¿El texto del marcador de posición se queda sin el área de texto en Safari?
- 13. en el área de texto con jQuery
- 14. Jeditable - resaltar todo el texto después de hacer doble clic
- 15. Vim Surround inserta espacio extra alrededor de la palabra
- 16. invocar cancelar en jeditable
- 17. texto alrededor de un div
- 18. área de texto dentro div
- 19. Quitar salto de línea del área de texto
- 20. Cambiar el valor del área de texto con jQuery
- 21. de entrada: Texto + selector de área de texto en jQuery
- 22. Eliminar el espaciado alrededor del área de trazado en r
- 23. ¿Cómo puedo incrustar un área de texto dentro de otra área de texto en HTML?
- 24. Capturar texto pegado en un área de texto con JQuery
- 25. Resaltar texto dentro de un área de texto
- 26. Limitar palabras en un área de texto
- 27. Cómo insertar texto en la posición actual de intercalación en un área de texto
- 28. Insertar texto después de la posición del cursor en el texto es
- 29. ¿Cómo debo desinfectar correctamente los datos recibidos de un área de texto cuando los devuelvo al área de texto?
- 30. Crear un halo alrededor del texto en Python usando PIL?
Impresionante. Esto es realmente útil. – Jake
En serio. Agregué esto a mi objeto base con el que construí todos mis objetos jeditables, y ahora puedo formatear mi página como quiera. Realmente útil ... – Jake
¡Esta es realmente una gran respuesta! Gracias. –