Генерируемая форма. Количество пунктов неизвестно. Поэтому name задал при помощи []. После проверки формы приходит JSON объект, в котором хранятся ошибки
errors:
name.0: ["Поле name.0 обязательно для заполнения."],
test.0: ["Поле test.0 обязательно для заполнения."]
Как, при помощи jQuery, выбрать input с ошибкой?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">
</form>
мб так
let json = {"name.0": ["Поле name.0 обязательно для заполнения."],
"test.0": ["Поле test.0 обязательно для заполнения."]};
for(let item of Object.keys(json)) {
let [,name, index] = item.match(/(.*)\.(\d+)/);
console.log( $(`input[name='${name}[]']`)[index] );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="text" name="test[]" value="1">
<input type="text" name="test[]" value="2">
<input type="text" name="test[]" value="3">
<input type="text" name="test[]" value="4">
<input type="text" name="name[]" value="5">
<input type="text" name="name[]" value="6">
<input type="text" name="name[]" value="7">
</form>
let responseJson = '{ "errors": { "name.0": ["Поле name.0 обязательно для заполнения."], "test.0": ["Поле test.0 обязательно для заполнения."] } }';
const parsed = JSON.parse(responseJson);
const elems = [];
Object.keys(parsed.errors || {}).forEach(
e => e.replace(/^([^.]+)\.([^.]+)$/,
(m, p1, p2) => elems.push($(`input[name="${p1}[]"]`).get(+p2))
)
);
$(elems).css('border-color', 'red');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="test[]" value="">
<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">
<input type="text" name="name[]" value="">
</form>
Подключаемся к форме, а потом ищем необходимые нам input. C помощью метода eq - выбираем нужный
let $form = $('form').find('input[name="name[]"]');
console.log(form.eq(3)) // Получите 4 элемент
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
при выборе select скрипт постоянно добавляет параметр, как его раз добавить и при следующих изменениях просто менять?
Нужно Нужно введенную строку вывести 10 раз, заранее спасибо!