【问题标题】:How can I calculate selected checkbox foreach only如何仅计算选定的复选框 foreach
【发布时间】:2020-03-01 21:46:18
【问题描述】:

我只需要在表格字段中计算选中的复选框 (harga_obat*jumlah)

这是我的 foreach 数据

@foreach ($obat as $o)
<tr>
    <td>
        <input id="check" type="checkbox" name="select[]" value="{{ $o->nama_obat }}">
    </td>
    <td>
        <input type="text" class="form-control" name="kode_obat" value="{{ $o->kode_obat }}" readonly>
    </td>
    <td>
        <input type="text" class="form-control" name="nama_obat" value="{{ $o->nama_obat }}" readonly>
    </td>
    <td>
        <input id="harga" type="text" class="form-control" name="harga_obat" value="{{ $o->harga_obat }}"
            onkeyup="sum()">
    </td>
    <td>
        <input id="jumlah" type="text" class="form-control" name="jumlah" onkeyup="sum()">
    </td>
    <td>
        <input id="total" type="text" class="form-control total-harga" name="total_harga" onkeyup="sum()" readonly>
    </td>
</tr>
@endforeach

这是我尝试过的,这仅适用于如下图所示的一行

function sum() {
    var harga = document.getElementById('harga').value;
    var jumlah = document.getElementById('jumlah').value;
    var hasil = parseInt(harga) * parseInt(jumlah);
    if (!isNaN(hasil)) {
        document.getElementById('total').value = hasil;
    }
}

【问题讨论】:

  • 为所有复选框赋予相同的类,您可以使用:len = $(".checkBoxClass:checked").length

标签: javascript html laravel checkbox


【解决方案1】:

你只能在一个页面中使用一个id,id = identifier,所以你可以使用对象id来确保它是唯一的并将它传递给sum函数

例如

@foreach ($obat as $o)
<tr>
    <td>
        <input id="check" type="checkbox" name="select[]" value="{{ $o->nama_obat }}">
    </td>
    <td>
        <input type="text" class="form-control" name="kode_obat" value="{{ $o->kode_obat }}" readonly>
    </td>
    <td>
        <input type="text" class="form-control" name="nama_obat" value="{{ $o->nama_obat }}" readonly>
    </td>
    <td>
        <input id="harga-{{ $o->id }}" type="text" class="form-control" name="harga_obat" value="{{ $o->harga_obat }}"
            onkeyup="sum({{ $o->id }})">
    </td>
    <td>
        <input id="jumlah-{{ $o->id }}" type="text" class="form-control" name="jumlah" onkeyup="sum({{ $o->id }})">
    </td>
    <td>
        <input id="total-{{ $o->id }}" type="text" class="form-control total-harga" name="total_harga"
            onkeyup="sum({{ $o->id }})" readonly>
    </td>
</tr>
@endforeach


<script>
    function sum(id) {
        var harga = document.getElementById('harga-' + id).value;
        var jumlah = document.getElementById('jumlah-' + id).value;
        var hasil = parseInt(harga) * parseInt(jumlah);
        if (!isNaN(hasil)) {
        document.getElementById('total-' + id).value = hasil;
        }
    }
</script>

希望对你有帮助

【讨论】:

  • 嗨@Saly 3301 我在提交时收到错误Array to string
  • 提交什么?你没有表格
【解决方案2】:

由于您有多个要 foreach 的行,因此您不能依赖唯一的 ID。一种(不优雅?)解决方案可能是为每一行定义动态的不同 id 并将该 id 传递给您的 sum 方法。

另一种解决方案是使用更通用的方法,将 sum 方法绑定到每一行,并将其传递给父范围,只使用现有的 id,如下所示:

function sum(parent) {
    var harga = parent.querySelector('[name="harga_obat"]').value;
    var jumlah = parent.querySelector('[name="jumlah"]').value;
    var hasil = parseInt(harga) * parseInt(jumlah);
    
    if (!isNaN(hasil)) {
        parent.querySelector('[name="total_harga"]').value = hasil;
    }
}

function bind(el) {
  el.addEventListener('keyup', function (event) {
    sum(event.currentTarget.closest("tr"));
  });
}

document.querySelectorAll('[name="harga_obat"]').forEach(function (element) {
  bind(element);
});
document.querySelectorAll('[name="jumlah"]').forEach(function (element) {
  bind(element);
});
<table>
<tr>
    <td>
        <input id="check" type="checkbox" name="select[]" value="{{ $o->nama_obat }}">
    </td>
    <td>
        <input type="text" class="form-control" name="kode_obat" value="{{ $o->kode_obat }}" readonly>
    </td>
    <td>
        <input type="text" class="form-control" name="nama_obat" value="{{ $o->nama_obat }}" readonly>
    </td>
    <td>
        <input id="harga" type="text" class="form-control" name="harga_obat" value="{{ $o->harga_obat }}">
    </td>
    <td>
        <input id="jumlah" type="text" class="form-control" name="jumlah">
    </td>
    <td>
        <input id="total" type="text" class="form-control total-harga" name="total_harga" readonly>
    </td>
</tr>
<tr>
    <td>
        <input id="check" type="checkbox" name="select[]" value="{{ $o->nama_obat }}">
    </td>
    <td>
        <input type="text" class="form-control" name="kode_obat" value="{{ $o->kode_obat }}" readonly>
    </td>
    <td>
        <input type="text" class="form-control" name="nama_obat" value="{{ $o->nama_obat }}" readonly>
    </td>
    <td>
        <input id="harga" type="text" class="form-control" name="harga_obat" value="{{ $o->harga_obat }}">
    </td>
    <td>
        <input id="jumlah" type="text" class="form-control" name="jumlah">
    </td>
    <td>
        <input id="total" type="text" class="form-control total-harga" name="total_harga" readonly>
    </td>
</tr>
</table>

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多