"#" actually is valid (sorry about that)... So. let' sum up...
We want keyboard accessibility, so we have to use either a A, or a BUTTON / INPUT type=button... If we choose the A element, we have to set the href attribute (I'd rather set it to "'#", than to deal with fragment identifiers... we won't use them anyway), and we have to return false from the handler... If we choose a BUTTON element, we have to deal with browser inconsistencies regarding the visual appearance...