Come inserisco un carattere spazio prima del testo dell'opzione in un elemento di selezione HTML?

StackOverflow https://stackoverflow.com/questions/25752

  •  09-06-2019
  •  | 
  •  

Domanda

In un elenco a discesa, devo aggiungere spazi davanti alle opzioni nell'elenco.sto provando

<select>
<option>&#32;&#32;Sample</option>
</select>

per aggiungere due spazi ma non visualizza spazi.Come posso aggiungere spazi prima dei testi delle opzioni?

È stato utile?

Soluzione

Non lo è &#160 l'entità per lo spazio?

<select>
<option>&#160;option 1</option>
<option>    option 2</option>
</select>

Per me va bene...

MODIFICARE:

Ho appena controllato questo, lì Maggio ci sono problemi di compatibilità con questo nei browser più vecchi, ma qui sembra che tutto funzioni bene per me.Ho solo pensato che avrei dovuto farti sapere perché potresti voler sostituire con &nbsp;

Altri suggerimenti

Penso che tu voglia &nbsp; O &#160;

Quindi una versione fissa del tuo esempio potrebbe essere...

<select>
  <option>&nbsp;&nbsp;Sample</option>
</select>

O

<select>
  <option>&#160;&#160;Sample</option>
</select>

Utilizzo \xA0 con stringa.Funziona perfettamente mentre si associano i dati del modello C# a un menu a discesa...

  SectionsList.ForEach(p => { p.Text = "\xA0\xA0Section: " + p.Text; });

Come ha sottolineato Rob Cooper, ci sono alcuni problemi di compatibilità con i browser più vecchi (IE6 visualizzerà le lettere effettive "& nbsp;"

Ecco come lo aggiro in ASP.Net (non ho VS aperto quindi non sono sicuro in quali caratteri venga effettivamente tradotto):

Server.HtmlDecode("&nbsp;") 

ho provato più cose ma l'unica cosa che ha funzionato per me è stata usare JavaScript.nota solo che sto usando il codice Unicode per lo spazio anziché l'entità html, poiché js non sa nulla delle entità

$("#project_product_parent_id option").each(function(i,option){
  $option = $(option);
  $option.text($option.text().replace(/─/g,'\u00A0\u00A0\u00A0'))
});

Puoi anche premere alt+spazio (su Mac) per uno spazio unificatore.Lo uso per un modulo Drupal perché Drupal decodifica le entità html.

Sono quasi certo che puoi ottenere questo risultato anche con il riempimento CSS.Allora non sarai sposato con i caratteri spaziali codificati in tutti i tuoi <option> tag.

@Brian

Sono quasi certo che puoi ottenere questo risultato anche con il riempimento CSS.Allora non sarai sposato con i caratteri dello spazio codificati in tutti i tuoi tag.

Ottima idea, ma sfortunatamente non funziona con IE7 (il browser preferito da tutti...) :-(

Ecco del codice che funzionerà in Firefox (e presumo Op/Saf).

<select>
    <option style="padding-left: 0px;">Blah</option>
        <option style="padding-left: 5px;">Blah</option>
            <option style="padding-left: 10px;">Blah</option>
    <option style="padding-left: 0px;">Blah</option>
        <option style="padding-left: 5px;">Blah</option>
</select>

Basta usare il carattere 255 (tipo Alt+2+5+5 sul tastierino numerico) con un carattere a spaziatura fissa come Courier New.

Server.HtmlDecode("&nbsp;") è l'unico che ha funzionato per me.

Altrimenti i chr vengono stampati come testo.

Ho provato ad aggiungere il riempimento come attributo per l'elemento di elenco, tuttavia non ha influito su di esso.

&nbsp;

Puoi provarlo?Oppure è lo stesso?

Anche io avevo lo stesso problema e dovevo risolverlo il prima possibile.Anche se ho cercato molto su Google, non sono riuscito a trovare una soluzione rapida.

Invece ho usato la mia soluzione, anche se non sono sicuro che sia appropriata, funziona nel mio caso ed è esattamente quello che dovevo fare.

Pertanto, quando aggiungi un ListItem nel menu a discesa e desideri aggiungere spazio, utilizza quanto segue: -

Premere ALT e digitare 0160 sul tastierino numerico, quindi dovrebbe essere qualcosa di simile ALT+0160.Aggiungerà uno spazio.

ListItem("ALT+0160 ALT+0160 TEST", "TESTVAL")

Ho provato molti di questi esempi, ma l'unica cosa che ha funzionato è stato usare javascript, molto simile a quello di dabobert, ma non jQuery, semplicemente il vecchio javascript vanilla e gli spazi:

for(var x = 0; x < dd.options.length; x++)
{
    item = dd.options[x];
    //if a line that needs indenting
    item.text = '     ' + item.text; //indent
}

Questo è solo IE.IE11 infatti.Uffa.

1.Articoli Torna all'elenco

2.Per ogni ciclo nell'elenco

3..

foreach (var item in q)
{
    StringWriter myWriter = new StringWriter();

    myWriter.Lable = HttpUtility.HtmlDecode(item.Label.Replace(" ", "&nbsp;"));
}

Questo funziona per me!!!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top