If I require fields they work fine if Freeform Spam is disabled. If Spam is enabled it submits regardless of the contents of the required fields.
My code:
{exp:freeform:form form_name="Volunteer_Interest" required="vol_name|vol_email" return="{path=}volunteer/success" notify="me@mydomain.com"}
<p>
<table id="VolunteerForm">
<tr><td class="Required">* Name:</td><td><input type="text" name="vol_name" value="" /></td></tr>
<tr><td class="Required">* Email:</td><td><input type="text" name="vol_email" value="" /></td></tr>
<tr><td class="Required">* Address:</td><td><textarea name="vol_address"></textarea></td></tr>
<tr><td class="Required">* City:</td><td><input type="text" name="vol_city" value="" /></td></tr>
<tr><td class="Required">* State:</td><td><input type="text" name="vol_state" value="" /></td></tr>
<tr><td class="Required">* Zip:</td><td><input type="text" name="vol_zip" value="" /></td></tr>
<tr><td>Best time to contact you:</td><td><input type="text" name="vol_best_time_to_contact" value="" /></td></tr>
<tr><td>Comments:</td><td><textarea name="vol_comments"></textarea></td></tr>
<tr><td colspan="2">Please check the boxes of opportunities that interest you:</td></tr>
<tr><td colspan="2">
<input type="radio" name="vol_interest" value="Mentoring"> Mentoring<br>
<input type="radio" name="vol_interest" value="Kinloch Price"> Kinloch Price<br>
<input type="radio" name="vol_interest" value="Office Tasks"> Office Tasks<br>
<input type="radio" name="vol_interest" value="Events"> Events<br>
<input type="radio" name="vol_interest" value="Other Ideas"> Other Ideas
</td>
</tr>
<tr><td colspan="2">{captcha}<br /><input type="text" name="captcha" value="" /></td></tr>
</table><br>
</p>
<input type="submit" name="submit" value="submit" class="SubmitButton"/>
{/exp:freeform:form}
