Есть вот такой просто валидатор формы регистрации(написан под cms):
$(document).ready(function check_reg_daten() {
$('#name').focusout(function CheckLogin(){
var name = document.getElementById('name').value;
$.post(dle_root + "engine/ajax/controller.php?mod=registration", { name: name, user_hash: dle_login_hash }, function(data){
if (data !== 'das') {
$('#name').addClass(' is-invalid');
$('[for=name]').html(data).addClass('text-danger');
setTimeout(function(){ $('[for=name]').text('Придумайте логин').removeClass('text-danger')},8000);
} else {
$('#name').removeClass(' is-invalid');
$('#name').addClass(' is-valid');
}
});
});
$('#email').focusout(function CheckEmail(){
var email = document.getElementById('email').value;
$.post(dle_root + "engine/ajax/controller.php?mod=registration", { email: email, user_hash: dle_login_hash }, function(email){
if (email !== 'dae') {
$('#email').addClass(' is-invalid');
$('[for=email]').html(email).addClass('text-danger');
setTimeout(function(){ $('[for=email]').text('E-mail адрес').removeClass('text-danger')},8000);
} else {
$('#email').removeClass(' is-invalid');
$('#email').addClass(' is-valid');
}
});
});
$('#registration').submit(function() {
if ($('#name').val().match(/[!"#$%&'()*+,.\/:;<=>?@[\\]^`{|}~]/g, "\\$&")) {
$('#name').addClass(' is-invalid');
$('[for=name]').html('{$lang['reg_err_4']}').addClass('text-danger');
setTimeout(function(){ $('[for=name]').text('Придумайте логин').removeClass('text-danger')},8000);
}
if ($('#name').val().length <= 3) {
$('#name').addClass(' is-invalid');
$('[for=name]').html('{$lang['reg_err_3']}').addClass('text-danger');
setTimeout(function(){ $('[for=name]').text('Придумайте логин').removeClass('text-danger')},8000);
}
if ($('#name').val().length > 40) {
$('#name').addClass(' is-invalid');
$('[for=name]').html('{$lang['reg_err_3']}').addClass('text-danger');
setTimeout(function(){ $('[for=name]').text('Придумайте логин').removeClass('text-danger')},8000);
}
var pass1 = $('#password1').val();
var pass2 = $('#password2').val();
if (pass1 != pass2) {
$('#password2').addClass(' is-invalid');
$('#password1').addClass(' is-invalid');
$('[for=password2]').html('{$lang['reg_err_1']}').addClass('text-danger');
setTimeout(function(){ $('[for=password2]').text('Повторите свой пароль').removeClass('text-danger')},8000);
} else {
$('#password2').removeClass(' is-invalid');
$('#password1').removeClass(' is-invalid');
}
if ($('#password1').val().length < 6) {
$('#password1').addClass(' is-invalid');
$('[for=password1]').html('{$lang['reg_err_2']}').addClass('text-danger');
setTimeout(function(){ $('[for=password1]').text('Введите пароль').removeClass('text-danger')},8000);
}
if ($('#password1').val().length > 72) {
$('#password1').addClass(' is-invalid');
$('[for=password1]').html('{$lang['reg_err_2']}').addClass('text-danger');
setTimeout(function(){ $('[for=password1]').text('Введите пароль').removeClass('text-danger')},8000);
}
});
return true;
});
И есть вот такая форма:
<form method="post" name="registration" onsubmit="if (check_reg_daten()) {return false;};" id="registration" action="">
тут поля для ввода информации
</form>
Но почему-то функция check_reg_daten не работает и при наличии ошибок в форме всё равно переходит на следующую страницу, хотя не должен.
Знаю что причина в return false но я не понимаю по какому принципу она работает.
Как заставить работать этот валидатор вместе с функцией check_reg_daten ?
P.S: Был раньше вот такой валидатор:
function check_reg_daten () {
if(document.forms.registration.name.value == '') {
DLEalert('{$lang['reg_err_30']}', dle_info);return false;
}
if(document.forms.registration.password1.value.length < 6) {
DLEalert('{$lang['reg_err_31']}', dle_info);return false;
}
if(document.forms.registration.password1.value != document.forms.registration.password2.value) {
DLEalert('{$lang['reg_err_32']}', dle_info);return false;
}
if(document.forms.registration.email.value == '') {
DLEalert('{$lang['reg_err_33']}', dle_info);return false;
}
return true;
};
И он работает а мой на jq не работает. Почему ?
Заранее спасибо всем!