我有4个选择菜单,都有相同的产品。 (用户应该使用选择菜单将产品添加到发票中)。
因此每个部分都由选择菜单,数量文本字段和价格文本字段组成。但我在同一页面中有四个。
每当我从选择菜单中选择产品时,我想更改数量和价格。但更具体地说,我想知道如何找出点击的选择菜单。
如果选择菜单有一类产品(.product),当我选择产品时,所有部分都会受到影响。但我只想影响特定的选择菜单部分。
$(".product").change(function(event){
alert('product picked'); // testing
});
我无法添加一个数字,例如:product1,product2,product3。因为那时在javascript文件中我将不得不写出4个不同的函数
$(".product1").change(function(event){,
$(".product2").change(function(event){, etc.
我知道这是非常基本的,但我需要刷新我的jQuery东西。
这是HTML的一些形式。我只包括产品选择菜单和数量文本字段以简化。
<div class="item">
<p>
Product:
<select class="product" id="invoice_line_items_attributes_0_item_id" name="invoice[line_items_attributes][0][item_id]"><option value="1" data-defaultquantity="1">WP setup</option>
<option value="2" data-defaultquantity="1">WordPress Theme Design</option>
<option value="3" data-defaultquantity="1">WHE/yr</option>
<option value="4" data-defaultquantity="1">WHE/mo</option></select>
</p>
Qty: <input class="quantity" id="invoice_line_items_attributes_0_quantity" name="invoice[line_items_attributes][0][quantity]" size="30" type="text" value="1"><br>
</div><hr>
<div class="item">
<p>
Product:
<select class="product" id="invoice_line_items_attributes_1_item_id" name="invoice[line_items_attributes][1][item_id]"><option value="1" data-defaultquantity="1">WP setup</option>
<option value="2" data-defaultquantity="1">WordPress Theme Design</option>
<option value="3" data-defaultquantity="1">WHE/yr</option>
<option value="4" data-defaultquantity="1">WHE/mo</option></select>
</p>
Qty: <input class="quantity" id="invoice_line_items_attributes_1_quantity" name="invoice[line_items_attributes][1][quantity]" size="30" type="text" value="1"><br>
</div><hr>
答案 0 :(得分:9)
在您的事件处理程序中,this
将绑定到相关的<select>
元素。
$(".product").change(function(event){
alert($(this).attr('name')); // name of <select> element changed
});
一个方便的技巧是使用“数据”属性将类似<select>
的内容与其他字段相关联。也就是说,你可以在数据属性中存储相关字段的“id”,以便处理程序可以找到要弄乱的字段:
<select name='whatever' data-quantity-id="whatever" data-price-id="whatever">
<option ... >
</select>
然后在处理程序中:
$('.product').change(function(event) {
var $quantity = $('#' + $(this).data('quantityId'));
var $price = $('#' + $(this).data('priceId'));
// ...
});
答案 1 :(得分:1)
$(".product").change(function(event){
$(this).closest(".section").find(".quantity").val("somevalue");
$(this).closest(".section").find(".price").val("somevalue");
});