In my experience, bots don't execute JavaScript (yet).
I add a hidden "spam" field to the form. When the form is submitted, I use Javascript to remove it. If the field is still present when sending to the server, flag the entry as spam. This has blocked all spam bots for us.