Javascript 获取数组下拉列表中选定值的数据价格

Javascript 获取数组下拉列表中选定值的数据价格,javascript,php,jquery,codeigniter,Javascript,Php,Jquery,Codeigniter,我有以下代码 <tbody> <tr> <td style="width:40%"> <select id="pname.0" name="pname[]" class="form-control "> <?php $this->db->order_by('name','asc'); $prod = $this

我有以下代码

<tbody>
    <tr>
        <td style="width:40%">
            <select id="pname.0" name="pname[]" class="form-control ">
            <?php 
            $this->db->order_by('name','asc');
            $prod = $this->db->get('product')->result_array();
            foreach($prod as $row):  ?>
                <option  data-price="<?php echo $row['price'];?>" value="<?php echo $row['prod_id'];?>" >
                    <?php echo ucwords($row['name']);?> 
                </option>
            <?php endforeach; ?>
            </select>
        </td>
        <td style="width:10%">
            <input class="form-control" onchange="javascript:calc();" id="item_quantity.0" name="qnty[]" value=""/>
        </td>
        <td class="text-right" style="width:10%">
            <input class="form-control text-right" onchange="javascript:calc();" id="item_price.0" name="price[]" value=""/>
        </td>                   
        <td class="text-right" style="width:10%">
            <input class="form-control text-right" id="subtot.0" readonly name="item_sub_total" value=""/>
        </td>
    </tr>
</tbody>


首先将一个类分配给所有
选择
。(除了“表单控制”)。我想你有
test
class

 var selectedPrices = [];
    var i = 0;
    $(".test").each(function(){
       selectedPrices[i] = $(this).find(":selected").attr("data-price");
    i++;
    });

现在,
selectedPrices
是一个价格数组。您可以用它做任何您想做的事情。

您可以监听元素的更改,并获得如下所示的price属性:

$('#pname.0').on('change', function(){
    var price = $(this).find('option:selected').data('price');
});

PS:我不确定您是否可以在ID属性中使用“.”。

这就是您想要的吗

//if your table has an id or class, use it as tag selector is not good without context.
//$(".tableClass") OR $("#tableID")    
$("table").on('change', "select[id^='pname']", function() {

    var $row = $(this).closest("tr"); 
    $row.find("input[id^='item_price']").val( $(this).find('option:selected').data("price") );

});
因此,要在选择器中使用
,您需要如中所述(第2段)对其进行转义


Demo@

选择字段也有动态id,如pname.0、pname.1等。我尝试过,但没有成功,请告诉我如何在我的文本框中获取selectedPrices的值。您忘了递增
I
。在
each()
loop中添加
i++
是否希望在多个文本框中使用相同的选定值?@LShetty,否我希望在同一行中的相应文本框中使用选定值。@LSheety,我尝试了您的代码,它仅适用于id pname.0,但我希望它是动态的,因为它;It’从来都不一样。它正在改变pname.0、pname.1、pname.2等。因此,您应该更清楚您的问题!你有多行选择和输入吗?是的,我有多行选择和输入,id递增。请帮我确认一下,因为你的答案几乎就是我想要的。谢谢。这个代码正是我要找的。