如果选中此复选框,则通过输入值,值是否在数组中?

时间:2019-03-22 11:52:44

标签: javascript php html

<?php include("database/connect.php"); ?>
<form action="" method="post">
    <?php
        $q = mysqli_query($con,"select * from tbl_user");
        while($f=mysqli_fetch_array($q))
        {
            ?>
            <input type="checkbox" name="ch[]" value="<?php echo $f['id'];?>"/>
            <input type="number" name="qty[]"/><br>
            <?php
        }
    ?>

    <input type="submit" name="yy" value="Submit"/>
</form>

从上面的代码中,如果复选框已选中,我想要数量的值。 如果有人知道逻辑然后发表评论,我会像array_combineforeach一样尝试。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在该复选框中关联一个onclick处理函数,并使onclick函数仅在选中时为您提供qty[]的值。为此,发送对元素的引用和对onclick函数的索引,并使用相同的索引来命名元素chqty

function cbClick(e, index) {
  if (e.checked) {
    var qty = document.querySelector('input[name="qty['+index+']"]').value;
    console.log('cb value '+ e.value);
    console.log('qty value' + qty);
  }
}
<!-- You will loop the PHP code to give the name to each elements with 0, 1, 2..-->
<input type="checkbox" name="ch[0]" onclick="cbClick(this, 0)" value="cb9" />
<input type="number" name="qty[0]" /><br>

<input type="checkbox" name="ch[1]" onclick="cbClick(this, 1)" value="cb10" />
<input type="number" name="qty[1]" /><br>

答案 1 :(得分:1)

数字输入(除非被禁用或没有名称)将总是成功并出现在数据中。

只有选中该复选框,该复选框才会成功。

这意味着使用PHP的简单数组语法将导致您的输入彼此不同步。输入的第一个数字将与第一个已选中复选框具有相同的索引,依此类推。

要解决此问题:给输入提供显式索引。

例如:

<input type="checkbox" name="ch[]" value="<?php echo $f['id'];?>"/>
<input type="number" name="qty[<?php echo $f['id'];?>]"/><br>

然后在PHP中,您可以:

foreach ($_POST[ch] as $ch_value) {
    do_something_with($_POST['qty'][$ch_value]);
}