I've had cross-browser trouble before with form submissions through a button click not generating the correct event. Also, if you have other handlers on the button they can sometimes interfere with the form-related events. When dealing with forms, I usually get better results using the submit event.
Put the button back into the form. Then catch the form.submit event instead of the button.click event.
$("#new_order").submit( function(evt) {
evt.preventDefault();
var btn = $(this).find('button[type=submit]');
// Do whatever it is you do here to indicate the loading state
// handle the form submission
// Undo your button load state
});