У меня есть форма HTML с двумя элементами DOM, которые работают вместе - ввод и сообщение об ошибке. Когда форма отправлена, а ввод пуст, я хочу применить некоторый код к сообщению об ошибке. Моя проблема в том, что мой HTML для позиции сообщения об ошибке строится по-разному в зависимости от платформы - настольной или мобильной - и я ничего не могу с этим поделать.
Пример рабочего стола:
<form name="form">
<div>
<input type="text" name="input-one">
<div class="error-message"></div>
</div>
<div>
<input type="text" name="input-two">
<div class="error-message"></div>
</div>
...
</form>
Пример мобильного телефона:
<form name="form">
<div>
<input type="text" name="input-one">
</div>
<div class="error-message"></div>
<div>
<input type="text" name="input-two">
</div>
<div class="error-message"></div>
...
</form>
Вы можете видеть, что в зависимости от платформы сообщение об ошибке может быть частью того же или другого родителя. По этой причине я не могу использовать селектор jQuery .next (). Я пробовал использовать также селектор .closest (), но он переносит DOM вверх и тоже не работает.
Итак, я пытаюсь достичь - используя относительную ссылку на элемент DOM (в данном случае ввод), найдите первый следующий элемент DOM, содержащий определенный класс c (в данном случае «error- сообщение").
Пример Javascript заглушка:
$('[name=form]').find(':text:visible').each(function (i, el) {
// select the next error message
});
Есть ли какая-либо комбинация селекторов, которая может помочь мне в этом?