Automaticky tabindex u vykreslení formulářů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Martin Mates
Člen | 179
+
0
-

Udělal jsem už asi tak 200 tisíc formulářů v nette a pokaždé jsem musel u definice všech inputů psát ->getControlPrototype()->tabindex('1'); apod.

Je to vopruz hlavně ve chvíli, kdy třeba nad validačními pravidly přibude addCondition nebo addConditionOn, tak přestane fungovat řetězení a getControlPrototype už za to nejde „zaháknout“. Musím to pak definovat extra $form['jmeno']->getControlPrototype()->tabindex('1');

Peklo nastane taky ve chvíli, kdy mi přibude nějaký input uprostřed. Musím pak všechny tabindex přepsat.

Podle mě by to měl renderer dělat automaticky. Přidal bych třeba funkci setTabindexStart, který by určoval od jakého čísla to pojede pro případ, že je formulářů na stránce víc. Jinak by to jelo od 1.

Co vy na to?

Editoval Martin Mates (31. 8. 2010 16:18)

knyttl
Člen | 196
+
0
-

To asi nebude tak jednoduché, kdyby to bylo úplně automatické, spolu s makry na vykreslování formulářů (https://forum.nette.org/…ni-formularu) by to asi dělalo neplechu. Nebo ne?

Editoval knyttr (31. 8. 2010 16:24)

iguana007
Člen | 970
+
0
-

Martin Mates napsal(a):
Co vy na to?

+1 Já jsem pro

Editoval iguana007 (31. 8. 2010 17:03)

David Grudl
Nette Core | 8147
+
0
-

Martin Mates napsal(a):

Udělal jsem už asi tak 200 tisíc formulářů v nette a pokaždé jsem musel u definice všech inputů psát ->getControlPrototype()->tabindex('1'); apod.

A proč?

Proki
Člen | 66
+
0
-

Osobně jsem atribut tabindex téměř nikdy nevyužil. Jaký je smysl číslovat postupně jednotlivá formulářová pole, když přechod pomocí klávesy TAB funguje automaticky i bez toho?

Lopata
Člen | 139
+
0
-

Já jsem formulářů udělal sice jen 150 tisíc, ale nikdy tabindex nebyl třeba. Funguje to i bez něj.

redhead
Člen | 1313
+
0
-

Já si po tomhle dokonce musel najít co tabindex vlastně dělá (věděl jsem, mlhavě, že je to něco s tabama :) )

jtousek
Člen | 951
+
0
-

Taky mi připadá jako zbytečnost tabindex řešit – když ho nepoužiješ vůbec, přepínání inputů normálně funguje.

@Martin Mates:
Pokud jde o tvůj problém s přidáváním inputů doprostřed tak na to existuje naprosto triviální fix:

<?php
$i = 0;
$form->addText(...)->getControlPrototype()->tabindex(++$i);
$form->addSelect(...)->getControlPrototype()->tabindex(++$i);
$form->addCheckbox(...)->getControlPrototype()->tabindex(++$i);
//... preinkrementace funguje víc než spolehlivě :)
?>

Editoval jtousek (31. 8. 2010 23:16)

rokerkony
Člen | 122
+
0
-

vyhoda(opravte me pokud se mylim) vyuzit tabindex je tehdy, kdyz je pred formularem spousta odkazu a nez se pres ne clovek preklika na danej form, tak to trva… ale automaticky rozhodne ne!

iguana007
Člen | 970
+
0
-

No tabindex byl zaveden především z důvodu absence myši u některých počítačů a taky kvůli lepší přístupnosti stránek pro handicapované uživatele, více zde:
http://webdesign.about.com/…aa071105.htm

redhead
Člen | 1313
+
0
-

Podle mě je to hlavně proto, aby si programátor mohl upravit defaultní chování tabu, který jde po prvcích tak jak jsou ve zdrojáku odshora dolů – někdy jsou případy že focus by měl skočit (logicky, vizuálně) někam jinam, než kam skáče. Jinak je použití tabindexu docela k ničemu.

Martin Mates
Člen | 179
+
0
-

Hmm tak to vypadá na další mýtus, ze školy. Tabindex vždycky a všude jinak zle. Takže jsem to dělal už více méně všude a považoval jsem to za good practice. Asi se na to vyprdnu to vypadá teda :-) Díky!