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)
