24.11.07

HTML kvíz

How Many HTML Elements Can You Name in 5 Minutes? je kvíz ve kterém máte (jak říká název) během pěti minut vyjmenovat značky, které jsou součástí HTML 4.
Já osobně jsem nedopadl až tak dobře, ale to jen proto, že HTML 4 nepoužívam a v XHTML spousta značek chybí a tak jsem si na ně nevzpomněl.
Do komentářů pište Vaše výsledky.

Štítky:

2.10.06

Form - Input image v IE

Při zpracovávání formuláře, který se odesílá pomocí obrázkového tlačítka (input type=image), jsem v IE narazil na další chybičku.

Mějme následující kód:

<?php print_r($_POST); >
<form method='post' action=''>
<input type='image' src='tlacitko.gif' name='nazev' value='hodnota'>
</form>

Po odeslání formuláře dostaneme následující proměnné a jejich hodnoty:
FF:

Array ( [nazev_x] => 8 [nazev_y] => 19 [nazev] => hodnota )

IE:
Array ( [nazev_x] => 8 [nazev_y] => 19 )


Jak je vidět, tak IE vůbec neodeslal název tlačítka s jeho přiřazenou hodnotou. Dostali jste jen XY souřadnice kliknutí.

Protože jsem použil v jednom projektu obrázková tlačítka pro určení směru řazení výběru z databáze, potřeboval jsem samozřejmě i nazev s hodnotou (v mém konkrétním případě name='order' value='asc' resp. value='desc')

Důvod chyby v IE neznám, ale mohu Vám předložit alespoň mé řešení tohoto problému, které spočívá v přidání jednoho skrytého pole se stejným názvem jako mají obě image tlačítka. Tomuto poli při odesílání (onclick event na tlačítku) přiřadíme požadovanou hodnotu:

<?php print_r($_POST); >
<form action='' method='post'>
<input name='orderDirection' value='asc'
src='/graphics/asc.png' alt='Vzestupně' type='image'
onclick = 'this.form.orderDirection.value="asc";this.form.submit();'/>
<input name='orderDirection' value='desc'
src='/graphics/desc.png' alt='Sestupně' type='image'
onclick = 'this.form.orderDirection.value="desc";this.form.submit();' />
<input type='hidden' name='orderDirection' value='' />
</form>

Dostaneme toto:
FF:

Array([orderDirection_x]=>9 [orderDirection_y]=>10 [orderDirection]=>asc)

IE:
Array([orderDirection]=>asc [orderDirection_x]=>19 [orderDirection_y]=>18)

Štítky: ,