Есть форма, с валидацией (jquery-validate плагин) . Проверяю в ней email по ajax на то создан он или нет, но форма все равно отправляется без проверки. Хотя проверка работает. Использовал preventDefault, return false. Все так же.
$('.validate').submit(function (e) {
e.preventDefault();
var success = true;
// var input_website = $(this).find('input[name="website"]');
$field = $(this).find('.required');
$field.removeClass('has-error');
// if (input_website.val().length == 0) {
// error.website = true;
// }
$.each($field,function(i,e){
var value = $(e).val().toLowerCase();
if(!value){
$(e).addClass('has-error');
success = false;
}
var badWords = ["facebook", "youtube", "google", "twitter", "pinterest", "linkedin", "imonomy", "weebly", "wix"];
for(var i = 0; i < badWords.length; i++)
{
// var value = $(this).value;
if ($(this).attr('id') == 'website') {
if(value.indexOf(badWords[i]) > -1 ) {
$(e).addClass('has-error');
success = false;
// return false;
}
}
}
if ($(this).attr('id') == 'email') {
var value_email = $('input#email').val();
$.ajax({ url: 'check-email.php',
data: {"email": value_email},
type: 'post',
success: function(output) {
console.log(output.toString());
if (output.toString() == 'false') {
$(e).addClass('has-error');
success = false;
}
}
});
}
})
// checkEmail();
if (success) {
params = $(this).serializeArray();
params.push({
'name': 'form',
'value': $(this).attr('id')
});
// console.log(params);
$.post('callback.php', params, function (data) {
$('#reg .hide-m').hide();
window.location.href = 'thanks.html';
});
}
return false;
});
Ссылка на jsfiddle -