id kan sættes på _alle_ html-elementer !-)
Visibility ændrer om et element aktuelt renderes synligt eller om det ikke renderes synligt, men stadig optager pladsen ...
Display bestemmer, om elementet i det hele taget medtages i beregningen af dokumentets visning ...
En meget simpel kodestump viser forskellen:
<hr>
<form>
Her starter formen<br>
<span style="display:none;">Her er et skjult felt: <input><br> </span>
<input type="submit">
</form>
<hr>
<form>
Her starter formen<br>
<span style="visibility:hidden;">Her er et skjult felt: <input><br> </span>
<input type="submit">
</form>
<hr>
-- som det tydelig ses, hvis du ser det i en browser, er pladsen alligevel afsat med visibility, og du undgår derfor, at 'formen' i opsætningen ændres, hvis man ændrer den til visible, mens der er ret tydelige forskelle, hvis display ændres (her til display:inline; da en span er et inline-element !-)
Skal man lave en 'generisk' løsning med at disable felter, skal man lave et javascript, som finder alle aktuelle felter f.eks. indenfor samme række og så reagerer på dem ...
Et eksempel på en sådan scripting, kan du se her:
http://www.eksperten.dk/spm/555262-- og måske kan dette også inspirere:
http://www.eksperten.dk/spm/554615 ...