Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить, что есть поле селект у товара (https://javascript.ru/forum/misc/46120-kak-proverit-chto-est-pole-selekt-u-tovara.html)

ksa 23.04.2014 08:50

Цитата:

Сообщение от borus
просто на странице несколько таких baget_select

Такого не должно быть. ИД уникально на странице...

borus 23.04.2014 14:02

Цитата:

Сообщение от depp (Сообщение 308826)
$(this).parent().prev(). //по моему такой путь до блока с выбором типа багета

попытался использовать эту часть предложенного вами решения в цикле, чтобы проверить тексты селектов. Почему-то всегда этот код
var elements = $('span.addtocart-button');
		for(var i=0; i<elements.length; i++) {
			var selection = $(elements[i]).parent().prev().find('#baget_select');//выбираю в соседней ветке DOM структуры select с #baget_select
			if (selection.length > 0 ){
				if(selection.text()=='Выберите багет'){
					alert('отключить эту кнопку!');
				} else {
					alert('оставить эту кнопку!');
				}
			}
		}

проходит по ветке else условного оператора, а сам alert(selection.text()) выводит текст вида "Выберите багет┘темныйсветлый"
где под ┘ я имею в виду перевод на новую строку.
а вот html-код того, что по идее отлавливается в selection:
Код:

<select name="customPrice[0][10]" required="" id="baget_select">
        <option disabled="">Выберите багет</option>
        <option value="5788">темный</option>
        <option value="5789">светлый</option>                                                 
</select>

Как же проверить, какое значение стоит в select'ах, просматриваемых в цикле?

depp 23.04.2014 22:14

я сейчас толком не вдавался в ваш код. но судя по тому что я увидел вы по прежнему используете множество одинаковых id на странице. id - это уникальный идентификатор элемента на странице. не может быть двух одинаковых id. иначе пропадает уникальность. используйте class.

далее для цикла есть хороший оператор each. используейте его.
$( ".baget_select" ).each(function() {
    $( this ).length // вот длина вашего объекта. не знаю что вы с ней делаете дальше...
});


Часовой пояс GMT +3, время: 20:22.