Semantically, <code>a</code> tags are meant for navigation, either a different page or location on the page. A <code>button</code> is meant for performing an action on the page. Screen readers will treat these two elements differently and the AT user will interact with them differently. Since this <code>a</code> is meant to perform an action like a button, you need to at least put <code>role="button"</code>. Then you would need to prevent the default action, since now it is communicated as a button and is actionable by <code>SPACE</code> which would cause the page the jump. You would also need to manage the <code>aria-disabled</code> state to communicate what is only visually expressed by the <code>control-disabled</code> CSS class. Or you could just a <code>button</code> and not have to worry about any of that.  FYI, setting <code>type="button"</code> will prevent the form from being submitted.