</div>
<div class="field-product-search">
<input type="text" value="bbb">
</div>
<div class="field-product-search">
<input type="text" value>
</div>
</div>
</div>
<div class="field-garment"></div>
</div>
<div class="field-design"></div>
jquery:
once(
"show",
".field-garment > div",
context
).forEach(wrapper => {
const $wrapper = $(wrapper);
createDesignsInfoinSidebar();
addOneDesignClass();
const $productSearchInput = $(
".field-product-search input", $wrapper);
$productSearchInput.each(function () {
if ($productSearchInput.val() === "") {
$(this).css("background", "red");
} else {
$(this).css("background", "green");
}
});
В последний инпут не введено значение и соотвественно value пустое, а значит background должен стать красного цвета, но у все инпуты стали зеленого цвета. Где я допустил ошибку?
Пожалуйста, такие большие куски кода постите в песочницу, например в codepen.io, так и вам будет понятнее и тем, кто захочет вам обязательно помочь
$productSearchInput.each(function () { if ($productSearchInput.val() === "") { // вот тут ты вызываешь .val на массиве инпутов $(this).css("background", "red"); } else { $(this).css("background", "green"); } в общем то , еслиб нейминг был правильней , то было бы более очевидно. тк productSearchInput это у тебя productSearchInputList на самом деле. а val() в jq = Get the current value of the first element in the set of matched elements. это значит что в проверке тебе три раза прилетает значение первого изи
Обсуждают сегодня