Pregunta

siguiente código es un ejemplo de texto colocado en un área de texto a partir de una base de datos.

<textarea id="inputPane" cols="80" rows="40" class="pane">
<p>
    some text here...
</p>
  <p>
    more text here...
</p>
</textarea>

usando .trim de jQuery lo que es el código de jQuery real para eliminar todos los espacios iniciales y finales y tienen la pantalla área de texto muy similar a la de abajo?

<textarea id="inputPane" cols="80" rows="40" class="pane">
    <p>some text here...</p>
    <p>more text here...</p>
</textarea>

He trabajado en esto durante horas sin éxito tratando diferentes combinaciones con .trim

$('#inputPane')jQuery.trim(string);
¿Fue útil?

Solución

Usted podría intentar algo como esto:

jQuery(function(​$) {
    var pane = $('#inputPane');
    pane.val($.trim(pane.val()).replace(/\s*[\r\n]+\s*/g, '\n')
                               .replace(/(<[^\/][^>]*>)\s*/g, '$1')
                               .replace(/\s*(<\/[^>]+>)/g, '$1'));
});​

Lo que da el resultado:

<p>some text here...</p>
<p>more text here...</p>

Aunque esto puede no ser a prueba de balas, se debe llegar a ser mucho más rápido / más eficiente que la creación de elementos de HTML el valor del área de texto.

Otros consejos

Prueba esto:

var $input = $('#inputPane');

var $container = $('<div>').html( $input.val() );

$('*', $container).text( function(i,txt) {
    return $.trim( txt );
});

$input.val( $container.html() );

Convierte el contenido de la textarea en elementos, camina a través de ellos y recorta el contenido, a continuación, inserta la parte posterior HTML resultante en el textarea.


EDIT: modificado para utilizar .val() en lugar de .text() como señaló @bobince

jQuery.trim() quitará espacio inicial y final de la cadena completa - en este caso, antes de la primera <p> y después de la última </p>. ¿Quieres algo más complejo, que consiste en eliminar los espacios en blanco entre ciertas etiquetas. Esto no es necesariamente fácil, pero podría (quizás!) Puede lograr con una expresión regular, por ejemplo:

// assuming val is the textarea contents:
val = val.replace(/>\s*</, '><').replace(/\s+$/, '');

RENUNCIA:. Esto fue sólo rápido de armar y no pueden cubrir todos los casos

Obtener el valor, el valor del ajuste, ajuste el valor:

var value = $('#inputPane').val();
value = $.trim(value);
$('#inputPane').val(value);

O en una sola línea:

$('#inputPane').val($.trim($('#inputPane').val()));

Esta es la forma en que lo haría ( demostración ):

$('.pane').val(function(i,v){
    return v.replace(/\s+/g,' ').replace(/>(\s)</g,'>\n<');
});

no es necesario jQuery para recortar espacios en blanco que conduce / detrás del área de texto. Es necesario que el código en la línea 1

Antes:

<textarea id="inputPane" cols="80" rows="40" class="pane">
    <p>some text here...</p>
    <p>more text here...</p>
</textarea>

Después de:

<textarea id="inputPane" cols="80" rows="40" class="pane"><p>some text here...</p></textarea>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top