Hi,
you can use RecordBrowser module - it covers all this points, but it's complex CRUD module.
Lower level modules that would do that are:
Libs/QuickForm (example: Tests/QuickForm) - documentation is available on HTML_QuickForm library home page
Utils/GenericBrowser (example: Tests/GenericBrowser)
and callbacks:
Tests/Callbacks
onChange functionality can be done with '.....onChange="'.$this->create_callback_href_js(...).'"......'
Cheers
Paul