Precisazione: si puo` farlo lato client (con JS); e non e` una cosa difficile: lo schema e` quello che proponi qui sopra.

Solo che a causa dei problemi di accessibilita`, l'idea corrente e` di spostare tutto quanto possibile lato server.