为什么多个复选框在我的JavaScript/Jquery中不起作用?

cgyqldqp  于 2023-06-29  发布在  jQuery
关注(0)|答案(2)|浏览(108)

我的脚本不适用于多个复选框,它只返回1个值,而不是根据选中的内容。哪里出错了?
JavaScript/jQuery:

<script type="text/javascript">
    function getProsesAlo() {
      var cblist = { 'period[]' : []};
      $(":checked").each(function() {
        cblist['period[]'].push($(this).val());
    });
    $.post("proses-alokasi.php", {
      nama: frmProses.fnama.value,
      prono: frmProses.fprono.value,
      thn: frmProses.ftahun.value,
      cblist
    },
    function(output) {
        $("#statusmsg").html(output).fadeIn(1000); 
    });
    }
   </script>

HTML表单:

<input type="text" name="fprono">
<input type="text" name="fnama">
<select id="tahun" name="ftahun" class="form-control form-control-md">
    <option value="">Tahun:</option>
    <?php
    for ($i=$tahun; $i >= $tahunmin; $i--){
    ?>
    <option value="<?=$i;?>"><?=$i;?></option>
    <?php
    }
    ?>
</select>
<input type="checkbox" name="period[]" value="1">
<input type="checkbox" name="period[]" value="2">
..
<input type="checkbox" name="period[]" value="12">
<input type="button" value="Proses" id="proses" onClick="getProsesAlo<?=$no;?>()">
<!----- Result ----->
<div id="statusmsg">Unprocessed</div>

PHP代码proses-alokasi.php:

<?php
    $prono = $_POST['prono'];
    $namaang = $_POST["nama"];
    $jiuran = $_POST["jiuran"];
    $thn = $_POST["thn"];
    $periode = $_POST['cblist'];
   
    if(!empty($_POST['cblist'])) {
        // Counting number of checked checkboxes.
        $checked_count = count($_POST['cblist']);
        // Loop to store and display values of individual checked checkbox.
        foreach($_POST['cblist'] as $pilihperiod){
        echo "<p>".$pilihperiod ."</p><br>";
            echo "<p>".$pilihperiode."</p><br>";
        }
    } else {
        echo "<b>Please Select At least One Option.</b>";
    }
    ?>

请大家帮忙,你的回答会很有帮助,谢谢。

wpcxdonn

wpcxdonn1#

用途:

var cblist = {"period" : []};
$(":checked").each(function() {
  cblist.period.push($(this).val());
});

以收集检查的值,否则PHP将以错误的格式(而不是数组)接收 cblist 的子项,因此将只接受最后一个值
也可以使用$(":checkbox:checked")作为复选框选择器,否则 select value也会包含在内

kfgdxczn

kfgdxczn2#

解决了
我改变:

var cblist = { 'period[]' : []};
      $(":checked").each(function() {
        cblist['period[]'].push($(this).val());
    });

致:

var cblist = $('input:checkbox:checked').map(function(){
               return this.value;
              }).get();

相关问题