On my personal site, I use the Divi Contact Form module at the bottom of the home page. It worked great on desktop but someone told me it didn’t work on mobile. Sure enough, they were right! On my iPhone, I got this message after submitting the form:
“Please refresh the page and try again.”
The form didn’t submit, even after refreshing (and even if it had, that would be an unacceptable workaround!)
This was embarrassing, as this was my web developer portfolio site!!
I couldn’t find the solution online, but after some experimenting, I found a few interesting things. If I disabled my spam blocker, WP Spamshield, the form would work on mobile.
So, I switched to Akisment, but it had the same problem.
Well, I couldn’t have a live site without spam protection, so I checked one other thing: I deactivated WP Fastest Cache, and the form started working again.
The Solution: Disable Caching
So it seems like the combination of anti-spam and caching breaks the Divi Contact Form module on mobile.
This was not a high-volume site, so I just deactivated WP Fastest Cache and left Akisment installed.
If you need a contact form to work with WP Fastest Cache, try the Contact Form 7 plugin. I verified that works on mobile with WP Fastest Cache.
I have since then switched to Siteground hosting, and I’ve confirmed that the Divi contact form does work with their caching fine.
One Solution If You Want To Keep Caching
I have switched hosts again, this time to Gridpane hosting on Vultr. Again, with the Redis object cache on, my Divi contact form didn’t work on desktop or mobile. Switch cache off, it works fine.
The solution is to reduce the Redis Object Cache Expiry time to something less than 24 hours so that the WP nonce gets refreshed. I set it to 8 hours (28800 seconds). After doing that I had to reload nginx. Now, my Divi contact forms work with the Redis Object Cache enabled on Gridpane!
A similar strategy might work on other hosts. Many thanks to Jordan T. for coming up with this fix!
Hope this was helpful! – Brian