2012-07-02 13 views
10

Mój problem pochodzi z rozwijanego menu HTML, nie można zachować wielu kolejnych białych znaków w opcjach. Oto przykładowa testcase i wynik. Css "white-space: pre" wydaje się działać tylko dla dowolnego elementu html z wyjątkiem opcji select element. Czy istnieje literatura lub przypadki identyfikujące taki problem? Wszelkie sugestie/doradzić pomocnyZachowaj odstępy w html wybierz opcje elementów za pomocą "white-space: pre" NOT working

print "<style>.keepwhitespace { white-space: pre }</style> 
<p class='keepwhitespace'>abc def</p> 
abc def 
<br/> 
<br/>select and options with keepwhitespace 
<select onchange=\"alert('\''+this.value+'\' '+this.value.length)\" class='keepwhitespace'> 
<option class='keepwhitespace'>Any </option> 
<option class='keepwhitespace'>abc def </option> 
<option class='keepwhitespace'> Any </option> 
<option class='keepwhitespace'>abc def </option> 
</select> 
<br/>select with keepwhitespace 
<select onchange=\"alert('\''+this.value+'\' '+this.value.length)\" class='keepwhitespace'> 
<option >Any </option> 
<option >abc def </option> 
<option> Any </option> 
<option>abc def </option> 
</select> 
<br/>options with keepwhitespace 
<select onchange=\"alert('\''+this.value+'\' '+this.value.length)\"> 
<option class='keepwhitespace'>Any </option> 
<option class='keepwhitespace'>abc def </option> 
<option class='keepwhitespace'> Any </option> 
<option class='keepwhitespace'>abc def </option> 
</select>"; 

wynik wygląda tak:

preinstalowanym Jak widać w „p” elementów znacznika (oraz wszelkie inne, które starałem użyciu, działa dobrze formatowanie tekstu z " spacje”style css. Jednak wybór nie.

As can be seen in the "p" element tag (and any other that I tried using, worked well formatting text with the "whitespace" css style. Yet the select does not.

na wybór, aby zobaczyć ciąg wartości pozycja i długość łańcucha (długość powinien mieć już 10 zamiast 7,«abc def»to 8 znaków w długość)

on selection to view the item value string and length of string (the length SHOULD have been 10 instead of 7, 'abc def' is 8 chars in length) Każda pomoc doceniona. ;)

LUHFLUH

Odpowiedz

11

wejścia Formularz zwykle mapować do ich odpowiednich rodzimych kontroli OS więc mogą być trudne do stylu. Typowe obejście problemu polegające na tym, że białe spacje nie zapadają się na 1 spację w <option> s, to użycie &nbsp; zamiast zwykłych spacji.

np. jedna z opcji byłoby:

<option>&nbsp;Any&nbsp;&nbsp;</option> 

Więcej niestandardowym wyglądzie, byś ukryć prawdziwy wybierz element, całkowicie i zastąpić go niestandardowym znaczników i JavaScript.

+0

dziękuję @Teoulas, uzyskałem wgląd z twoją sugestią. Zastąpiłem wszystkie białe znaki "" z " " za pomocą str_replace '$ str1 = str_replace (" ","   ", $ str1); ..... 'dla każdej wartości opcji. Kinda jest do bani, jak takie kwestie nie są przynajmniej udokumentowane ... zajęło mi trochę czasu, aby znaleźć Twoją sugestię;)! Jeszcze raz dziękuję – luhfluh

+1

Jedną rzeczą, na którą należy zwrócić uwagę przy takim rozwiązaniu, jest to, że ponieważ nie jest to przestrzeń łamania, nie zostanie przerwana. Oznacza to, że każdy długi tekst, który to zrobisz, pozostanie w jednym wierszu. Jeśli wiesz, że modyfikowany tekst jest krótki, to rozwiązanie działa świetnie. Nie działało to w moim przypadku z wprowadzaniem przez użytkownika, które jest bardzo często dość długie. – Colin