Step 1: add the form ID to the submit button attribute
Step 2: Make sure each input field PARENT has a ID. That way the “error class will be added to the parent wrapper.
Step 3: Make sure each input field has a “data-error-message” attribute. This will be pasted in the error box. If you forget this you will get “undefined” pasted in the box. You can use HTML in these.
Step 4: Make sure your form has a div with a class of “form_status”. Otherwise the errors won’t get pasted anywhere.
Step 5: If you want the field to have a input status text or mark make sure you put a span tag with “input_status” class within the input wrap parent.
$( ".validate_form" ).click(function(event) { // 1017PM
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
var this_forms_id = $(this).attr('data-forms-id');
var parent = "";
var error_message = "";
var error_messages = "";
var field_value = "";
var has_errors = false;
$(this_forms_id+" .required").each(function(i, input) {
parent = $(input).parent().attr('id');
$( '#'+parent ).removeClass( 'error' );
$( '#'+parent+' .input_status').text('');
error_message = $(input).attr('data-error-message');
field_value = $(input).val();
if (field_value == "") { //325PM
has_errors = true;
$('#'+parent).addClass('error');
$('#'+parent+' .input_status').text('Error');
error_messages = error_messages + error_message;
} //325PM
if ($(this).attr('type') == "radio") {
var radio_name = $(this).attr("name");
if (!$('[name="'+radio_name+'"]').is(':checked')) {
$('#'+parent).addClass('error');
$('#'+parent+' .input_status').text('Error');
if (error_message != undefined) { error_messages = error_messages + error_message; }
}
}
});
$(this_forms_id+" .validate_email").each(function(i, email) {
parent = $(email).parent().attr('id');
error_message += $(email).attr('data-error-message');
field_value = $(email).val();
if (!IsEmail(field_value)) { //617PM
has_errors = true;
error_messages += "Email invalid";
$('#'+parent).addClass('error');
$('#'+parent+' .input_status').text('Error');
} //617PM
});
if (has_errors == true) { //326PM
$(this_forms_id+' .form_status').addClass('error');
$(this_forms_id+' .form_status' ).removeClass( "hide" ).addClass( "show" );
$(this_forms_id+' .form_status').html(error_messages);
} //326PM
if (has_errors == false) { //321PM
$(this_forms_id).submit();
} //321PM
}); // 1017PM
<form action="http://yoyo.com/bid-request/" method="post" enctype="text" id="bid_request_form" >
<div class="br_input_wrap" id="name_input_wrap">
<label>Name<span>*</span></label>
<input type="text" name="bid_request_name" id="name" value="" placeholder="First Name, Last Name" class="required" data-error-message="<div>Forgot Name</div>"/>
<span class="input_status"></span>
</div>
<div class="br_input_wrap" id="bid_request_email_wrap">
<label>Email<span>*</span></label>
<input type="text" name="bid_request_email" id="email" value="" class="validate_email" data-error-message="<div>Forgot Email</div>" />
<span class="input_status"></span>
</div>
<div class="br_input_wrap" id="bid_request_phone_wrap">
<label>Phone<span>*</span></label>
<input type="text" name="bid_request_phone" id="phone" value="" class="required" data-error-message="<div>Forgot Phone</div>" />
<span class="input_status"></span>
</div>
<div class="br_input_wrap" id="bid_details_wrap">
<label>Bid Details<span>*</span></label>
<textarea name="bid_details" id="bid_details" class="required" data-error-message="<div>Forgot Bid Details</div>"></textarea>
<span class="input_status"></span>
</div>
<input type="hidden" name="queried_contractors" id="queried_contractors" value="" />
<button type="button" class="submit_button validate_form" data-forms-id="#bid_request_form">Submit</button>
<input type="hidden" name="bid_request_submitted" id="bid_request_submitted" value="true" />
<div class="form_status"></div>
</form>