2010-11-08 11 views
6

Sto prelevando da un feed JSON e voglio solo visualizzare un massimo di 10 caratteri della stringa e poi fare un ... dopo. Come faccio a farlo con JQuery?Imposta il limite di caratteri da visualizzare in un paragrafo

+0

Si modifica la tua domanda per includere una parte del codice che avete già scritto per ottenere più risposte. +1 per il nuovo utente che scende votato per nessun motivo elencato. –

risposta

4

non hai bisogno di jQuery, JS può farlo:

 
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

Non ho verificato questo errore per un errore, quindi potrebbe essere necessario regolare l'indicizzazione.

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

È possibile utilizzare i CSS per impostare i puntini di sospensione:

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

Allora non c'è bisogno di alcun jQuery o altra codifica.

Riferimenti:

(notare che primo anello - Quirksmode.org è una risorsa eccellente in generale per CSS e roba Javascript)

+1

Cool uso di CSS. Non sapevo di overflow di testo, dovrò saperne di più su di esso. –

+0

I puntini di sospensione dei CSS sono fantastici ma supportano solo una riga di testo – JoenasE

2

Non credo che la soluzione CSS menzionata da @spudley sia cross browser (nessun supporto per Firefox). Supponendo che ti interessi ovviamente. Il primo link che fornisce indica anche il supporto limitato nell'angolo in alto a destra della pagina.

Ora, avendo detto che ho una bella piccola funzione che potrebbe essere esagerata per quello che ti serve, ma ho trovato che la uso regolarmente in situazioni simili. Il codice riportato di seguito è stato commentato, ma ciò che fa è solo inserire un'ellissi dopo l'ultima parola completa in base al limite impostato.

Così si può tornare "Il cane salta ..." invece di "Il cane 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

Ovviamente, non è supportato da Firefox * ancora * (presto si spera?). Ma tutti gli altri browser lo supportano (anche IE fino a I5.5), quindi ha una buona copertura e persino Firefox lo tronca correttamente. Inoltre ci sono workbugs hacky per farlo funzionare in Firefox usando XUL ... ma questa è tutta un'altra domanda e risposta. – Spudley

+0

@Spudley è una bella soluzione. Personalmente non vedo l'ora che funzioni con cross browser. Volevo solo assicurarmi che lui/lei (e chiunque altro potesse imbattersi in questa domanda per avere delle risposte) fosse consapevole del fatto che, se le loro esigenze richiedono una soluzione cross browser, potrebbe non funzionare come previsto. –

+0

cool. Proverò a usarlo – JoenasE

Problemi correlati