jQuery(document).ajaxComplete(function (e) { //срабатывает после успешного AJAX
var formClass = $('#wpcf7-f5-o1 form').attr('class'); //Wordpress Contact Form 7
if (formClass.split(' ')[1] === 'invalid') { // Если какое-то поле не валидно, то форме добавит класс invalid
//Получаю val у селекта
var hearFromVal = $('#hearFrom').val()
if(!hearFromVal) {
$('#hearFrom').css('border-color', '#ff0000');
} else {
$('#hearFrom').css('border-color', '#bbb');
}
}
});
Данный код работает на декстопе. На моб не срабатывает. Не могу понять, почему. Другие проверки (на почту, телефон, длину поля) срабатывают везде правильно.
UPD
Ещё дело может быть в проверке if(!hearFromVal), потому что пустая строка, например, вернёт true, и проверка пройдена не будет.
let args = [null, 0, false, ' ', undefined];
for(let i = 0; i < args.length; i++) {
if(!args[i]) {
console.log(i+' '+false);
}
else {
console.log(i+' '+true);
}
}
Но без воспроизводимого примера, просто по куску скрипта сказать трудно.
Возможно, дело в конструкции formClass.split(' ')[1] - Вы проверяете строго второй элемент массива. А, может быть, в мобильной версии класс invalid идёт другим по счёту (добавляются ещё какие-то классы, например).
Если уж Вы делаете такую проверку на наличие класса, то нужно по всему массиву пройтись, а не брать какой-то определённый элемент.
Продвижение своими сайтами как стратегия роста и независимости