ugrás a tartalomhoz

legördülő elemek kiratási hosszának maximalizálása

mokat · 2009. Feb. 4. (Sze), 15.25
sziasztok,

a nagyon csupasz igazság:
<form>
<select>
<option>ide baromi hosszúszöveget írok</option>
<option>ide meg nem</option>
</select>
</form>

Úgyse fogjátok értelmesnek gondolni, de annyi lenne a problémám, hogy az általam megadott hosszúságú legyen a legördített jószág álatl kíírt karakterek száma, még akkor is ha esetleg egy két elemnek lemarad a vége (de majd a felhasználó odaképzeli:P). (úgyanúgy, mint a maxlength="érték" az input type=text -nél)
thnax előre is!
 
1

Kiírás

Poetro · 2009. Feb. 4. (Sze), 16.01
Mivel a dolog legfejlebb JavaScripttel oldható meg kliens oldalon, valószínű hasznosabb ezt szerver oldalon megoldani:

<form>
<select>
<option value="ide baromi hosszúszöveget írok">ide baromi...</option>
<option value="ide meg nem">ide meg nem</option>
</select>
</form>
2

jó-jó de...

mokat · 2009. Feb. 4. (Sze), 16.24
az a baj hogy a legördülő elemek egy mysql adatbázisból származnak, ahol is nincs kedvem egyesével végig nyalni a "számomra túl hosszú" sorokat. (lévén hogy legalább 300 db van és dinamikusan változnak)
3

substr?

cSuwwi · 2009. Feb. 4. (Sze), 16.42
Most mi itt a gond? Ha adatbázisból jönnek, a listázásnál ellenőrzöd hogy mennyi karakterből áll, és ha több mint a megadott limited akkor rövidítesz. 1 sor az egész.
$options = (strlen($row['nev'])>30) ? substr($row['nev'], 0, 30)."..." : $row['nev'];
ezt berakod az options megjelenő részéhez és probléma megoldva
4

SELECT elem szélessége

Török Gábor · 2009. Feb. 4. (Sze), 17.07
És ha stíluslappal a SELECT elem szélességét korlátozod?
5

a félreértés elkerülése végett...

mokat · 2009. Feb. 4. (Sze), 17.18
A kiiratás története:

$result = mysql_query("SELECT meccslista FROM hategy");   
$output = '<select name="meccs">';   
while($row = mysql_fetch_array($result)) 
{   
  $value = reset($row);   
  $output .= "n". '<option value="'. htmlspecialchars($value, ENT_QUOTES) .'">'. htmlspecialchars($value, ENT_QUOTES) .'</option>';   
}   
$output .= "n</select>";   
print $output;
minden megoldás érdekel :)
6

CSS?

Török Gábor · 2009. Feb. 4. (Sze), 17.35
Cselesen próbálod meg, hogy valaki tálcán kínálja neked a kódot. Viszont nem válaszoltál arra, hogy a CSS miért nem jó megoldás a problémádra? Ha csak „esztétikai” megfontolásból szeretnéd mindezt, akkor egyértelműen CSS.
7

Mintha

Poetro · 2009. Feb. 4. (Sze), 19.35
És mintha ezt a kódot is és én írtam volna kb egy héttel ezelőtt.
8

igen igen

mokat · 2009. Feb. 4. (Sze), 20.21
amit nagyon szépen meg is köszönötem és teszem is ismét ;)
értem én a css megoldást, holnap bele is vágok, és azért írtam hogy minden megoldás érdekel, hátha valaki tud még valamit. Szeretek egy probléma megoldásához több oldalról közelíteni 8)
9

Szerintem is CSS

Ustak · 2009. Feb. 4. (Sze), 21.29
de ha már szóba került eme sok szép nyelv, itt egy javascript lehetőség:

var joszag=document.getElementById("legordulo_joszag");
for (var i=-1;joszag.options[++i];joszag.options[i].text=joszag.options[i].text.substring(0,5)) {};
12

Saját részeded elfelejtetted betenni

zila · 2009. Feb. 5. (Cs), 08.55
Szeretek egy probléma megoldásához több oldalról közelíteni

Ez szép, de azért a kérdésfelvetésen túl, te is hozzátehetnél a témához. Pl. hogyan próbáltad egyedül megoldani a problémát, és hol akadtál el benne... Mert így kicsit (nagyon) úgy néz ki, hogy te csak ücsörögsz, feldobod a problémát és várod, hogy kipottyanjanak a megoldások.
10

Ieből nem.

janoszen · 2009. Feb. 4. (Sze), 22.53
IE-ből nem fogod tudni megcsinálni. Legalábbis nem 6-osból. Le kell vágnod a szövegből vagy annyi helyet kell hagynod, hogy kiférjen a teljes select.
11

phpval a legegyszerűbb

cSuwwi · 2009. Feb. 5. (Cs), 00.15
Hát én még mindig azt mondom, hogy php-val kéne megoldani, biztos hogy működik minden böngészőben.
A js megoldásnak is jó, de elhasal, ha le van tiltva a böngészőben.
Css-el meg minden böngészőben más, pláne ha a rendszer style belepiszkál a select mezőbe is.

Gondolom nem fix betűméretű fontokat használsz, ezért a 'W' és az 'i' helyfoglalása más lesz, pontosan nem lehet belőni, csak átlagolni.
18

Jó a PHP, csak nem erre való

Török Gábor · 2009. Feb. 5. (Cs), 15.05
Hát, csupán mert megjelenés végett nem akarod, hogy túl széles legyen egy elem a honlapon, nem hiszem, hogy ezért a jó megoldás az adat csonkítása. Azt pedig nem tudom, hogy miért más minden böngészőben a width:100px (pláne, hogy ki az a rendszer, aki rajtam kívül belepiszkál a hova), de meggyőzhető vagyok.
19

Végülis

cSuwwi · 2009. Feb. 5. (Cs), 18.07
Azért bátorkodtam a php-t javasolni, mert az eredmény így egyéb beállításoktól függetlenül (js letiltása, css nélküli böngészésben) is mindig ugyanaz. Ha minden "tökéletes" lenne kliens oldalon, én is a css-t preferálnám.
A "rendszer" kicsit pontatlan megfogalmazás volt, window$ alatti témákra gondoltam, amik többnyire a select mezőket is átdesignolják. Ha szélesebb a legördülő rész "nyila" a szokásosnál, akkor arra a "100px"-re kevesebb fog látszani a szövegből, ergo ronda lesz. Persze ez legyen a legkisebb baj, de szerintem nem lehet erre általánosítani, hogy a width:100px minden böngészőben, minden theme alatt jó is lesz, míg egy vágott string jó esetben kiférhet.
Persze lehet hogy nincs igazam, meg egy sort beszúrni a css-be kényelmesebb, de szerintem ez se elvetendő megoldás, mégha nem is erre való.
21

Ugyanazt írjuk

Török Gábor · 2009. Feb. 6. (P), 15.22
A megoldásod teljesen jó, csak az alapfeltevésed nem.

Habár explicit még a kérdés felvetője ezt nem mondta ki, vélhetően esztétikai megfontolásból szeretné a csonkítást. Na már most, a megjelenés a CSS feladata. Ha olyan klienssel olvasod az oldalt, ami amúgy sem támogatja a CSS-t, akkor pont hogy ez az egész kérdés fel sem merül, hiszen nincs design, nincs mi „szétessen”.

Az pedig, hogy a 100px-re kevesebb látszik bizonyos platformokon a szövegből, nem látom, miért is gáz, hiszen pont ezt szeretné a kérdező, és te is erre adtál neki megoldást, csak te PHP-vel csonkítasz, én CSS-sel, viszont az én példámban megmarad az adat, csak vizuálisan trimmeled.
13

noh

mokat · 2009. Feb. 5. (Cs), 09.08
egy kicsit akkor arról amivel dolgozom:
céges noti (local admin jog egy álom...) így notepaddal nyomatom + IE 6

ZILA: én azért írtam a HTML fórumba, mert úgy próbáltam megoldani mint, ahogy az eredti témában is írtam, hogy (naívan) valami "kapcsolóval" html-ül megoldható, de nem vitte semmi.(gondolok itt size, maxlength ésatöbbi) CSS-t még nem virítottam a lapomhoz, most ráülök a témára, bár én is úgy érzem, hogy php barátunkkal lenne a legteljesebb megoldás.
14

$maximum=40; //maximum

Tanul0 · 2009. Feb. 5. (Cs), 12.55

$maximum=40; //maximum engedélyezett karakter
if(strlen($amitszeretnelhogyrovidlegyen)>$maximum) 
{
    $amitszeretnelhogyrovidlegyen=substr($amitszeretnelhogyrovidlegyen, 0, $maximum);
    $amitszeretnelhogyrovidlegyen.='...';
}	
15

ugyanaz

cSuwwi · 2009. Feb. 5. (Cs), 13.04
Ugyanezt írtam meg 1 sorban a 3. postban :D
16

tudom, csak így átláthatóbb

Tanul0 · 2009. Feb. 5. (Cs), 13.18
tudom, csak így átláthatóbb szerintem, bár lehet, hogy nem, nah mind1 :D én így használom mindig

bár most ahogy nézem, tetszik a megoldásod, mert rövidebb nem kell annyit gépelni.

Jó ez a tenáris operátor, csak mindig elfeledkezem róla
17

substr

Poetro · 2009. Feb. 5. (Cs), 13.40
Azért azt hozzátenném ha valamilyen Unicode karakterkészletű a szöveg (pl. UTF-8) akkor a substr nem igazán jó megoldás, érdemes helyette az mb_substr-t használni, ami a megfelelő byte-nál vágja el, a szöveget, azaz nem betű / karakter közben. Amennyiben az mb_substr nem elérhető, a legtöbb keretrendszer tartalmaz egy másik implementációt erre (pl. drupal_substr).
20

ezt jó tudni :) át is írtam

Tanul0 · 2009. Feb. 6. (P), 12.37
ezt jó tudni :) át is írtam az utf-8 kódolású oldalaimon :)