A few things,
First, consider implementing a view-side limitation, while it won't stop someone clever it will improve your UI alot(users won't have buttons that work but won't do anything).
I'm assuming users have to login to send applications, else this whole thing wouldn't be too useful.
What I would do is create a table with all the job IDs, every time a user applies to a job, you add him to that table.
When a user tries to apply for a job, you first check if there's a match for that jobID/userID in this table, If there's no match, You can move along and check if the information was posted correctly and actually add the information to the database, and also to that jobID/userID table(so he can't post twice).
On the view side, I would send a variable to the view with all the jobID's this current user has applied to and use simple ifs or javascript to disable the buttons(or show alerts when the user tries to push the buttons).
I hope this helps a bit