2012-08-06 14 views
6

Voglio mettere un elenco a discesa sulla mia pagina, poiché un'opzione è troppo lunga, quando faccio clic sul menu di selezione, si espanderà e coprirà l'altra parte della pagina.Come avvolgere il testo nell'opzione HTML

<select id="selectlist" name="SelectProgram"> 

    <option value="LIR" >LIR</option> 
     <option value="How to word wrap text in HTML?">How to word wrap text in HTML? CSS/HTML text wrap for webkit</option> 

La seconda opzione è troppo lunga e si espanderà. C'è un modo in cui potrei avvolgere un testo così lungo in 2 righe? Grazie!

+3

No, non è possibile avvolgere il testo in una selezione nativa. Suggerisco di impostare la larghezza della selezione su una larghezza fissa. –

risposta

6

Vedere come il valore e il testo di una selezione possono essere molto diversi. Vorrei dire se nel caso in cui una stringa che è selezionata per il testo sia più lunga di X, la troncerà.

Esempio con jQuery

$('#myselect option').each(function() 
{ 
    var myStr = $(this).text(); 
    if(myStr.length > 15){$(this).text(myStr.substring(15));} 
}); 

messo che nel documento pronto, e sarà tagliare il testo fino ad una dimensione migliore, avvolgendo gli elementi in un div che nasconderà l'overflow sta andando a fare qualcosa di un guaio dopo, e tornerai qui cercando di risolvere un problema simile causato da quello per le stringhe che sono più piccole.

+0

+1, non avrei pensato a questo – bkconrad

+1

Due cose per migliorare questo codice: usa 'sottostringa (0,15)' altrimenti i 15 caratteri FINALI verranno afferrati. Inoltre, mi piace aggiungere ellissi ogni volta che il testo dell'opzione viene troncato, quindi l'utente sa che è stato, ad esempio: 'text (myStr.substring (0,15) + '...')'. Rispondi modificato per includere questi ... – Marcus

+0

Un altro rapido commento: fai attenzione agli spazi bianchi extra nel tuo HTML tra i testi delle opzioni quando usi questo Javascript. Il tuo browser potrebbe averlo rimosso, ma il metodo JS 'length' no. – Marcus

0

avvolgere che l'input in un div, mettere un po 'di larghezza per div, in modo che la linea non andrà al di fuori del div, lik qui sotto:

<div id="something" style="width:500px"> 
    <select id="selectlist" name="SelectProgram"> 
    <option value="LIR" >LIR</option> 
    <option value="How to word wrap text in HTML?">How to word wrap text in HTML? CSS/HTML text wrap for webkit</option> 
    </select> 
</div> 
4

Impostare una larghezza fissa può essere fatto senza l'involucro div semplicemente utilizzando

<select id="selectlist" name="SelectProgram" style="width: 500px"> 
    <option value="LIR" >LIR</option> 
    <option value="How to word wrap text in HTML?">How to word wrap text in HTML? CSS/HTML text wrap for webkit</option> 
</select> 

in pratica, si dovrebbe mettere width: 500px in una regola di corrispondenza nel file CSS.

Problemi correlati