This seems to be a classic question in the drupal world, did you search already for similar posts?

Here is what my research provided: 

This is a two-fold issue, you can start by working on the Client-Side, but to avoid duplicates, you should ultimately work on the Server-Side.
Here are what I found to be the "best practice" ways to go about this problem.

**Client-Side:**

Client-side solution:
https://www.drupal.org/project/hide_submit

*But what if the javascript is not there?*  
  
**Server-Side:**

Closer to the direction you started out with:

http://drupal.stackexchange.com/a/152181/57183


I would apply both approaches, starting with the "Server-Side" approach.

Good luck!