добавил валидацию полей всех
This commit is contained in:
@@ -71,20 +71,54 @@ if (timeLeft <= 0) {
|
||||
$('#captcha img').attr('src', aveabspath + 'inc/captcha.php?cd=' + now.getTime());
|
||||
}
|
||||
|
||||
// ВАЛИДАЦИЯ ПОЛЕЙ
|
||||
|
||||
function validate(form) {
|
||||
var checks = [
|
||||
{ field: form.comment_author_name, msg: "Введите имя" },
|
||||
{ field: form.comment_author_email, msg: "Введите Email" },
|
||||
{ field: form.comment_text, msg: "Введите текст" }
|
||||
];
|
||||
for (var i = 0; i < checks.length; i++) {
|
||||
if (checks[i].field && !checks[i].field.value.trim()) {
|
||||
alert(checks[i].msg);
|
||||
$(checks[i].field).focus();
|
||||
return false;
|
||||
var isValid = true;
|
||||
|
||||
// Вспомогательная функция для подсветки
|
||||
function setInvalid($el, show, msg) {
|
||||
if (show) {
|
||||
$el.addClass('is-invalid');
|
||||
if ($el.next('.invalid-feedback').length === 0) {
|
||||
$el.after('<div class="invalid-feedback">' + msg + '</div>');
|
||||
}
|
||||
isValid = false;
|
||||
} else {
|
||||
$el.removeClass('is-invalid');
|
||||
$el.next('.invalid-feedback').remove();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
// Проверка Имени
|
||||
setInvalid($(form.comment_author_name), !form.comment_author_name.value.trim(), "Введите ваше имя");
|
||||
|
||||
// Проверка Email
|
||||
setInvalid($(form.comment_author_email), !form.comment_author_email.value.trim(), "Введите корректный Email");
|
||||
|
||||
// Проверка Доп. поля №1 (если оно обязательное)
|
||||
if (typeof REQ_F1 !== 'undefined' && REQ_F1 == '1') {
|
||||
var f1 = $('#in_author_website');
|
||||
setInvalid(f1, !f1.val().trim(), "Заполните: " + NAME_F1);
|
||||
}
|
||||
|
||||
// Проверка Доп. поля №2 (если оно обязательное)
|
||||
if (typeof REQ_F2 !== 'undefined' && REQ_F2 == '1') {
|
||||
var f2 = $('#in_author_city');
|
||||
setInvalid(f2, !f2.val().trim(), "Заполните: " + NAME_F2);
|
||||
}
|
||||
|
||||
// Проверка Текста
|
||||
setInvalid($(form.comment_text), !form.comment_text.value.trim(), "Введите текст комментария");
|
||||
|
||||
if (!isValid) {
|
||||
// Скроллим к первой ошибке
|
||||
$('html, body').animate({
|
||||
scrollTop: $('.is-invalid:first').offset().top - 130
|
||||
}, 300);
|
||||
}
|
||||
|
||||
return isValid;
|
||||
}
|
||||
|
||||
/* --- ДЕЙСТВИЯ (DELETE, LOCK, OPEN/CLOSE, VOTE) --- */
|
||||
@@ -130,6 +164,12 @@ if (timeLeft <= 0) {
|
||||
initCommentTimers();
|
||||
var $doc = $(document);
|
||||
|
||||
// Убираем красную рамку, когда пользователь начинает исправлять поле
|
||||
$doc.on('input change', '.form-control', function() {
|
||||
$(this).removeClass('is-invalid');
|
||||
$(this).next('.invalid-feedback').fadeOut(200, function() { $(this).remove(); });
|
||||
});
|
||||
|
||||
// Счетчик: Количество оставшихся символов 1000 для формы создания комментария
|
||||
$('#in_message').limit(1000, '#charsLeft_new');
|
||||
|
||||
@@ -193,6 +233,8 @@ if (timeLeft <= 0) {
|
||||
$('#user_rating_stars .star-choice').removeClass('bi-star-fill').addClass('bi-star');
|
||||
$('#image_preview_wrapper').addClass('d-none');
|
||||
$('#charsLeft_new').text(MAX_CHARS);
|
||||
$('.form-control').removeClass('is-invalid');
|
||||
$('.invalid-feedback').remove();
|
||||
});
|
||||
|
||||
$doc.on('click', '#reset_stars', function(e) {
|
||||
|
||||
Reference in New Issue
Block a user