actually, the downside of this solution is that holder div centers everything in it, including text and children and children of children... so it's usually better to use 'margin: 0 auto' on single elements, when we don't want the entire container centered - and, as pointed out, you can achieve that with block elements. Still, occasionally I use centering like this, so it's -0 from me, since you're not wrong...
–
vaxquisApr 26 '14 at 21:07

Input elements are inline by default. Add display:block to get the margins to apply. This will, however, break the buttons onto two separate lines. Use a wrapping <div> with text-align: center as suggested by others to get them on the same line.

Assuming the buttons are supposed to be next to each other on the same line, they should not each be centered using the 'auto' margin, but placed inside a div with a defined width that has a margin '0 auto':