I actually solved this problem myself! I have two buttons, one the html submit button which fires the client-side validation, and the other which submits to the server. I have a Total field which is calculated at the end of the validation, and I have a requiredfieldvalidator on this control, so they can't click the asp:button without running the client-side validation!
Without the total field, I could always use a hidden field to do the same thing, but then the user would be hitting two buttons, and that would be odd. So, although my current problem is solved, I'm still curious how to handle it with the single button.
If anyone wants to see this form in action, it's at
http://www.celibre.com/admin/consult.aspx. I've set up a guest password for wrox users, username is guest, pwd is wroxRu!es