Můžete vytvářet dynamické akce v tabulkových polích formuláře, ale musíte znát některé věci Javascript / jQuery / DOM, protože to nelze provést deklarativně jako u položek stránky.
Jako příklad jsem vytvořil jednoduchý tabulkový formulář na EMP tabulce:
Pomocí nástroje Inspect Element v prohlížeči vidím, že kód HTML pro pole Ename na řádku 3 vypadá takto:
<input type="text" name="f03" size="12" maxlength="2000" value="Ben Dev"
class="u-TF-item u-TF-item--text " id="f03_0003" autocomplete="off">
Relevantní bity, které je třeba poznamenat, jsou jméno "f03" a ID "f03_0003". U všech polí tabulkového formuláře název označuje sloupec a je stejný pro všechna pole v tomto sloupci. ID se skládá z názvu a řetězce, který představuje řádek – v tomto případě „_0003“ představuje řádek 3.
Podobně jsou všechna pole Hiredate pojmenována „f004“ a mají ID jako „f04_0003“.
Vyzbrojeni těmito informacemi můžeme napsat dynamickou akci. Řekněme například, že vždy, když je Ename prázdné, pak Hiredate by měl být skrytý, jinak zobrazen. V pseudokódu:
při každé změně prvku s názvem "f03" by měl být prvek s názvem "f04" na stejném řádku skrytý nebo zobrazen.
Můžeme tedy vytvořit synamickou akci s podmínkou When takto:
- Událost =změna
- Typ výběru =selektor jQuery
- selektor jQuery =input[name="f03"]
tj. kdykoli se změní vstup, jehož název je „f03“, spusťte tuto akci.
Provedená akce bude muset být "Spustit kód Javascript" a kód může být:
// Get the ID of this item e.g. f03_0004
var this_id = $(this.triggeringElement).attr('id');
// Derive the ID of the corresponding Hiredate item e.g. f04_0004
var that_id = 'f04'+this_id.substr(3);
if ($(this.triggeringElement).val() == "") {
// Ename is empty so hide Hiredate
$('#'+that_id).closest('span').hide();
} else {
// Ename is not empty so show Hiredate
$('#'+that_id).closest('span').show();
}
Protože Hiredate je nástroj pro výběr data, potřeboval jsem skrýt/zobrazit jak samotné pole, tak jeho ikonu pro výběr data. Rozhodl jsem se to udělat tak, že jsem skryl/zobrazil rozsah, který je obsahuje oba. Tento kód mohl být napsán mnoha různými způsoby.
K dosažení svých cílů můžete použít podobné techniky, ale jak vidíte, není to triviálně snadné.