Выбрать имя товара js

manaz
На сайте с 13.12.2013
Offline
61
1091

Всем добрый день. Пытаюсь выбрать имя товара в конкретном блоке, а именно в том в котором id того же товара, но у меня выбирается первый попавшийся на странице.

Код блока с товаром:


<div class="product vm-col vm-col-3 vertical-separator">
<div class="spacer">
<div class="vm-product-media-container">

<a title="Zipper pullover 2" href="/wear/zipper-pullover-156-detail">
<img src="/images/stories/virtuemart/product/resized/shirt2_0x90.png" alt="virtuemart sample" class="browseProductImage"> </a>

</div>

<div class="vm-product-rating-container">
<div class="ratingbox dummy" title="Пока без рейтинга">

</div>
<span class="vmicon vm2-normalstock" title="У нас достаточный запас данного товара"></span>
</div>


<div class="vm-product-descr-container-1">
<h2><a href="/wear/zipper-pullover-156-detail">Zipper pullover 2</a></h2>
<p class="product_s_desc">
Your winter season friend. </p>
</div>


<div class="vm3pr-6"> <div class="product-price" id="productPrice1214">
<div class="PricebasePriceVariant vm-display vm-price-value"><span class="vm-price-desc">Основная цена для варианта: </span><span class="PricebasePriceVariant">$52.51</span></div><span class="price-crossed"></span><div class="PricesalesPrice vm-display vm-price-value"><span class="vm-price-desc">Цена: </span><span class="PricesalesPrice">$59.86</span></div><div class="PricediscountedPriceWithoutTax vm-display vm-price-value"><span class="vm-price-desc">Цена без налога: </span><span class="PricediscountedPriceWithoutTax">$49.88</span></div><div class="PricediscountAmount vm-display vm-price-value"><span class="vm-price-desc">Скидка: </span><span class="PricediscountAmount">$-3.15</span></div><div class="PricetaxAmount vm-display vm-price-value"><span class="vm-price-desc">Сумма налога: </span><span class="PricetaxAmount">$9.98</span></div><div class="PriceunitPrice vm-nodisplay"><span class="vm-price-desc">Цена / кг: </span><span class="PriceunitPrice"></span></div></div>

<div class="clear"></div>
</div>
<div class="vm3pr-2"> <div class="addtocart-area">
<form method="post" class="product js-recalculate" action="#">
<div class="vm-customfields-wrap">
<div class="product-fields">
<div class="product-field product-field-type-S">
<span class="product-fields-title-wrapper"><span class="product-fields-title"><strong>String, is input</strong></span>
<span class="hasTooltip" title="" data-original-title="<strong>String, is input</strong><br />Select a variant"><img src="/media/system/images/tooltip.png" alt="Tooltip"></span></span>
<div class="product-field-display"><select id="customProductData_1214_402" name="customProductData[1214][13]" class="vm-chzn-select chzn-done" style="display: none;">
<option value="401">Basic Без дополнительного сбора</option>
<option value="402">Handmade +$128.15</option>
</select><div id="customProductData_1214_402_chzn" class="chzn-container chzn-container-single chzn-container-single-nosearch" style="width: 220px;"><a href="javascript:void(0)" class="chzn-single"><span>Basic Без дополнительного сбора</span><div><b></b></div></a><div class="chzn-drop" style="left: -9000px; width: 218px; top: 25px;"><div class="chzn-search"><input type="text" autocomplete="off" style="width: 183px;"></div><ul class="chzn-results"><li id="customProductData_1214_402_chzn_o_0" class="active-result result-selected" style="">Basic Без дополнительного сбора</li><li id="customProductData_1214_402_chzn_o_1" class="active-result" style="">Handmade +$128.15</li></ul></div></div>
</div> </div>
<div class="product-field product-field-type-S">
<span class="product-fields-title-wrapper"><span class="product-fields-title"><strong>String, admin list</strong></span>
<span class="hasTooltip" title="" data-original-title="<strong>String, admin list</strong><br />Select a variant"><img src="/media/system/images/tooltip.png" alt="Tooltip"></span></span>
<div class="product-field-display"><select id="customProductData_1214_500" name="customProductData[1214][14]" class="vm-chzn-select chzn-done" style="display: none;">
<option value="403">Cotton Без дополнительного сбора</option>
<option value="501">Nylon Без дополнительного сбора</option>
<option value="502">Polyester +$5.11</option>
<option value="499">Wool +$10.24</option>
<option value="500">Flax +$16.65</option>
</select><div id="customProductData_1214_500_chzn" class="chzn-container chzn-container-single chzn-container-single-nosearch" style="width: 220px;"><a href="javascript:void(0)" class="chzn-single"><span>Cotton Без дополнительного сбора</span><div><b></b></div></a><div class="chzn-drop" style="left: -9000px; width: 218px; top: 25px;"><div class="chzn-search"><input type="text" autocomplete="off" style="width: 183px;"></div><ul class="chzn-results"><li id="customProductData_1214_500_chzn_o_0" class="active-result result-selected" style="">Cotton Без дополнительного сбора</li><li id="customProductData_1214_500_chzn_o_1" class="active-result" style="">Nylon Без дополнительного сбора</li><li id="customProductData_1214_500_chzn_o_2" class="active-result" style="">Polyester +$5.11</li><li id="customProductData_1214_500_chzn_o_3" class="active-result" style="">Wool +$10.24</li><li id="customProductData_1214_500_chzn_o_4" class="active-result" style="">Flax +$16.65</li></ul></div></div>
</div> </div>
<div class="clear"></div>
</div>
</div>

<div class="addtocart-bar">
<!-- <label for="quantity1214" class="quantity_box">Кол-во: </label> -->
<span class="quantity-box">
<input type="text" class="quantity-input js-recalculate" name="quantity[]" data-errstr="Вы можете приобрести этот товар только в партии, состоящей из %s единиц(ы) товара!" value="1" init="1" step="1">
</span>
<span class="quantity-controls js-recalculate">
<input type="button" class="quantity-controls quantity-plus">
<input type="button" class="quantity-controls quantity-minus">
</span>
<span class="addtocart-button">
<input type="submit" name="addtocart" class="addtocart-button" value="Добавить в корзину" title="Добавить в корзину"> </span> <input type="hidden" name="virtuemart_product_id[]" value="1214">
<noscript>&lt;input type="hidden" name="task" value="add"/&gt;</noscript>
</div> <input type="hidden" name="option" value="com_virtuemart">
<input type="hidden" name="view" value="cart">
<input type="hidden" name="virtuemart_product_id[]" value="1214">
<input type="hidden" name="pname" value="Zipper pullover 2">
<input type="hidden" name="pid" value="1214">
<input type="hidden" name="Itemid" value="101"> </form>

</div>

</div>

<div class="vm-details-button">
<a href="/wear/zipper-pullover-156-detail" title="Zipper pullover 2" class="product-details">Описание товара</a> </div>

</div>
</div>

JS



jQuery(document).ready(function(){
jQuery('[name=addtocart]').click(function(e){



var $this = jQuery(this);

var rParent = jQuery(this).parent().parent();

id = rParent.find('input[name=\"virtuemart_product_id[]\"]').val();


pname = jQuery('[name=pname]').val();

quantity = rParent.find('input[name=\"quantity[]\"]').val();

alert(pname);


alert(id);



});

});

id получаю тот что нужно именно того блока по котором кликнул, но вот имя name="pname" не то, вставляется первое на странице. Блоков с товарами около 10.

ID везде уникальный...

Как же верно сделать выборку того имени в котором тот же id. Помогите знатоки JS

ДП
На сайте с 23.11.2009
Offline
203
#1

подозреваю, что надо вместо

pname = jQuery('[name=pname]').val();

выбирать так:

pname = rParent.find('[name=pname]').val();

ну чисто по аналогии с id, который. как вы говорите, выбирается корректно.

manaz
На сайте с 13.12.2013
Offline
61
#2
Дикий пионер:
подозреваю, что надо вместо
pname = jQuery('[name=pname]').val();

выбирать так:
pname = rParent.find('[name=pname]').val();

ну чисто по аналогии с id, который. как вы говорите, выбирается корректно.

Нет. таким образом получаю undefined. Числовые выбираются без проблем id и quantity. С буквенными значениями проблема.

MK
На сайте с 18.08.2005
Offline
126
#3
manaz:
Нет. таким образом получаю undefined. Числовые выбираются без проблем id и quantity. С буквенными значениями проблема.

У вас $(this).parent().parent() это див с классом addtocart-bar, в нем есть инпут virtuemart_product_id[] , а вот [name=pname] в элементе еще на 1 уровень выше. Некрасиво, но проще всего rParent=$(this).parent().parent().parent() и дальше rParent.find('[name=pname]').val();

нет
manaz
На сайте с 13.12.2013
Offline
61
#4

Вот оно, благодарю Вас...Теперь четко идет выборка имени.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий