This just bit me. I always figured that a <button>text</button> tag was the same as an <input type="button" value="text" />. This is not the case, depending on the browser.
While in IE <button>text</button> is treated as <input type="button" value="text" />, in Google Chrome and I believe in FF3, <button>text</button> is treated as <input type="submit" value="text" />. Which means that if you've been using <button onclick="..">text</button> as a way to javascript-up your user interface, and you're not decorating it with a type=".." attribute, you'll get some *cough* unexpected results.
... Results like the whole form getting submitted without your programmatic permission!! Arrrgh.
So to fix that, just get used to writing up the HTML with: <button type="button" onclick="..">text</button>. It's more markup but it's the proper way. Sucks for a bit, and then life goes on. Kinda like our economy, so I keep telling myself.