在数组的下拉列表中获取所选值的数据价格

时间:2015-03-14 09:55:22

标签: 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->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>

现在,我希望在Dropdown中将选定选项的data-price属性的值设置为具有动态ID item_price_ 0的文本框。这已经改变,因为我添加了添加行按钮。当我点击添加行时,ID将变为item_price_ 1。

请帮助我如何使用jquery或javascript获取这些值

3 个答案:

答案 0 :(得分:2)

这是你追求的吗?

//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") );

});

因此,要在选择器中使用.,您需要按照jQuery selectors API

中提到的那样(第2段)转义它们

演示@ fiddle

答案 1 :(得分:0)

首先为所有select分配一个班级。 (除了&#34;表格控制&#34;)。我猜选择test

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

现在,selectedPrices是一系列价格。你可以随心所欲地做任何事情。

答案 2 :(得分:0)

您可以听取元素的变化,并获得价格属性:

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

PS:我不确定你能用“。”在ID属性中。