首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery多重onChange

Jquery多重onChange
EN

Stack Overflow用户
提问于 2016-06-08 07:13:30
回答 2查看 597关注 0票数 0

浏览截图网

在我的例子中,每个人选择"PILIH PAKET JENIS HARGA“,那么"Harga”列中的每一行都将被填充为相等的值。

虽然我希望"PILIH PAKET JENIS HARGA“上的每一个选项都能改变"Harga”中的行,同时也要更改每一个对应于"Qty“列的乘数的结果。

这里我的代码:

代码语言:javascript
复制
<script type="text/javascript">

    $(document).ready(function(){

    // Tambah Row tabel
        $('#btn_paket_show').click(function(){          
            $('.tabel_paket tbody').append('<tr class="baris"><td style="width:50px; text-align:center; vertical-align:middle;"><input type="hidden" name="msg[]"><button name="btn_paket_hide[]" type="button" class="btn btn-danger btn-xs btn_paket_hide"><span class="glyphicon glyphicon-trash"></span></button></td><td><input type="text" class="form-control jml_paket" id="jml_paket" name="jml_paket[]" value"" placeholder="0"></td><td><select class="form-control nm_paket_hrg" id="nm_paket_hrg" name="nm_paket_hrg[]" ><option>PILIH JENIS PAKET HARGA</OPTION><?php foreach($list_paket as $s){?><option value="<?php echo ($s->id_item_paket_hrg."~".$s->nm_paket_hrg."~".$s->hrg);?>"><?php echo $s->hrg;?> @ <?php echo $s->nm_paket_hrg;?></option><?php }?></select></td><td><input class="form-control harga" id="harga[]" name="harga[]" type="text"></td></tr>');
        });

        $(document).on('change', '.nm_paket_hrg', function(){           
            var a_a = $(this).val();
            var a = a_a.split("~");
            var b = $('.jml_paket').val();
            var c = a[2]*b;

            $('.harga').val(c);
        });
</script>


<!-- TAMBAH PAKET -->
<button type="button" class="btn btn-info" id="btn_paket_show"><span class="glyphicon glyphicon-plus"> TAMBAH PAKET</button>
<table class="table table-striped table-bordered table-hover tabel_paket">
    <thead class="thead-2">
        <tr class="tr-2">
            <th class="th-2" style="width:50px; text-align:center;"><span class="glyphicon glyphicon-trash"></span></th>
            <th class="th-2" style="width:150px">QTY (Kg/Pcs)</th>
            <th class="th-2" style="width:300px">Nama Paket Harga</th>
            <th class="th-2" style="width:200px">Harga (Rp)</th>
        </tr>
    </thead>
    <tbody class="tbody-2">
    </tbody>
    <thead class="thead-2">
        <tr class="tr-2">
            <th class="th-2" colspan="3" style="text-align:right; vertical-align:middle">Total Harga (Rp)</th>
            <th class="th-2"><input class="form-control" id="total_harga" name="total_harga" type="text" placeholder="0"></th>
        </tr>
    </thead>
</table>

有什么解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-08 07:30:49

如果只想在与.nm_paket_hrg元素相同的行中设置.nm_paket_hrg元素的值,则需要限制这一行:

代码语言:javascript
复制
$('.harga').val(c);

与...since一样,它匹配所有.harga元素,因此设置所有元素的值。

由于处理程序中的this引用了已更改的.nm_paket_hrg,所以可以使用它导航到行并从行导航到.harga

代码语言:javascript
复制
$(this).closest("tr").find(".harga").val(c);

您可能也希望在这一行中这样做:

代码语言:javascript
复制
var b = $('.jml_paket').val();

...since,它将读取匹配.jml_paket第一元素的值。

所以:

代码语言:javascript
复制
$(document).on('change', '.nm_paket_hrg', function() {
    var $this = $(this);                    // Reuse this
    var $row = $this.closest("tr");         // Find the row
    var a_a = $this.val();
    var a = a_a.split("~");
    var b = $row.find('.jml_paket').val();  // Just the one on this row
    var c = a[2] * b;

    $row.find(".harga").val(c);             // Just the one on this row
});
票数 0
EN

Stack Overflow用户

发布于 2017-07-11 16:17:44

只需使用css类,并在jquery文档中这样做。

代码语言:javascript
复制
$( ".target" ).change(function() {
  alert( "Handler for .change() called." );
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37695602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档