2010-11-08 10 views
6

Estoy sacando de una fuente JSON y solo quiero mostrar un máximo de 10 caracteres de la cadena y luego hacer un ... después. ¿Cómo hago eso con JQuery?Establecer límite de caracteres para mostrar en un párrafo

+0

se editan su pregunta para incluir una parte del código que ya ha escrito para obtener más respuestas. +1 para los nuevos usuarios que votan sin motivo aparente. –

Respuesta

4

que no es necesario jQuery, JS puede hacer eso:

 
string.substr(start,length) 

start The index where to start the extraction. First character is at index 0 
length The number of characters to extract. If omitted, it extracts the rest of the string 
6

No he comprobado esto por un error, por lo que es posible que deba ajustar la indexación deficiente.

var txt = SomeStringFromFeed; 
if(txt.length > 10) 
{ 
    txt = txt.substr(0,10) + "..."; 
} 
return txt; 
11

Puede utilizar CSS para establecer una elipsis:

.myparagraph { 
    white-space: nowrap; 
    width: 10em; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 

Entonces no hay necesidad de ningún jQuery u otra codificación

Referencias:

(tenga en cuenta que el primer enlace - Quirksmode.org es un excelente recurso generalmente para CSS y cosas Javascript)

+1

Cool uso de CSS. No sabía sobre desbordamiento de texto, tendré que aprender más al respecto. –

+0

Elipsis de CSS es genial, pero solo admite una línea de textos – JoenasE

2

No creo que la solución CSS mencionada por @spudley sea un navegador cruzado (no es compatible con Firefox). Suponiendo que te preocupes por eso, por supuesto. El primer enlace que proporciona indica incluso el soporte limitado en la esquina superior derecha de la página.

Ahora, una vez dicho esto, tengo una pequeña función que puede ser exagerada para lo que necesita, pero he encontrado que la uso regularmente en situaciones similares. El siguiente código ha sido comentado, pero lo que hace es que solo inserta una elipsis después de la última palabra completa en función del límite establecido.

para que pueda volver "El perro salta ..." en lugar de "El perro salta ove ..."

// ============================================================================================== 
// Truncate a string to the given length, breaking at word boundaries and adding an elipsis 
//  @param str - String to be truncated 
//  @param limit - integer Max length of the string 
//  @returns a string 
// ============================================================================================== 

    function truncate(str, limit) { 
     var chars; 
     var i; 

     // check if what was passed as a string is actually a string 
     if (typeof(str) != 'string') { 
      return ''; 
     } 

     // create an array of the chars in the string 
     chars = str.split(''); 

     // if the length is greater than the set limit, process for truncating 
     if (chars.length > limit) { 
      // while the char count is greater than the limit, 
      for (i = chars.length - 1; i > -1; --i) { 
       // if char count is still greater, redefine the array size to the value of i 
       if (i > limit) { 
        chars.length = i; 
       } 
       // if char count is less than the limit keep going until you hit a space 
       // and redefine the array size to the value of i 
       else if (' ' === chars[i]) { 
        chars.length = i; 
        break; 
       } 
      } 
      // add elipsis to the end of the array 
      chars.push('...'); 
     } 
     // return the array as a string 
     return chars.join(''); 
    } 
+0

Tienes razón, por supuesto, Firefox * aún no lo admite * (¿ojalá?). Pero todos los demás navegadores lo soportan (incluso IE hasta IE5.5), por lo que tiene buena cobertura e incluso Firefox lo trunca correctamente. Además, hay soluciones prácticas para hacer que funcione en Firefox usando XUL ... pero esa es otra pregunta y respuesta. – Spudley

+0

@Spudley es una buena solución. Personalmente espero con anticipación cuándo funcionará este navegador cruzado. Solo quería asegurarme de que él/ella (y cualquier otra persona que pudiera encontrar respuestas a esta pregunta) estuviera consciente de que si sus necesidades requieren una solución de navegador cruzado, es posible que no funcione para ellos como se esperaba. –

+0

genial. Voy a tratar de usar esto – JoenasE

Cuestiones relacionadas