【问题标题】:Check/Uncheck the checkbox by changing values in options in different rows通过更改不同行中选项的值来选中/取消选中复选框
【发布时间】:2014-09-28 04:18:18
【问题描述】:

我有一个如下表

<tbody>
<?php 
foreach($redeemSales as $sale)
{ 
   ?>
   <tr>
      <td><form><input type="checkbox" name="userSelection" ></form></td>
      <td><?php echo $sale["ring"];?></td>
      <td><?php echo formatFullDate($sale["soldDate"]) ?></td>
      <td><?php echo $sale["saleType"]; ?></td>
      <td>   
          <div class="col-lg-8">
                <select name="type" class="form-control redeemOptions">
                <option value="None">None</option>
                <option value="CD">CherieDori Credit (CD)</option>
                <option value="Amex">American Express Card (Amex)</option>
            </select>
        </div>
      </td>
  </tr>
<?php }?>
</tbody>

我想要的是,当我选择让我们说默认值为 "None" 。

当我选择第二个选项“CD”时,复选框会自动被选中。

如果我更改为任何其他选项,那么它应该会自动取消选择。

有多行,我只想选中相应的复选框。

这是我在javascript中尝试过的

$(document).ready(function(e) 
{    
    $('.redeemOptions').change(function()
    {
        var menuChanged = $(this);

        parentForm = menuChanged.closest('form');
        correspondingCheckbox = parentForm.find('input[name=userSelection]');

        if(menuChanged.val() == 'CD') 
        {           
            correspondingCheckbox[0].checked = true;
        }
        else
        {
            correspondingCheckbox[0].checked = false;   
        } 
    });
});

首先,correspondingCheckbox.checked = true; 不起作用。我怎样才能正确。

其次,如果我按下按钮,我想获取所有选定行的 ID。例如第一行、第三行等

我在桌子下面有个按钮

<a class="btn btn-primary" href="actions.php?j=5&saleIds=x,x,x,x">Redeem Sales &rarr;</a>

我想发送我选择的行的所有销售 ID。 foreach($redeemSales as $sale) 是销售吗?它的销售 ID 可以通过 $sale['id']. 获得,我可能需要,当我将复选框更改为 true 时将它们添加到一个数组中,然后在单击 herf 按钮上方时发送它。我将如何在 javascript 中检查选择或单击按钮时,它会检查所有选中的复选框并制作一个列表并传递给 actions.php?

【问题讨论】:

    标签: javascript php jquery html checkbox


    【解决方案1】:

    问题可能是复选框的遍历。根据上面的标记,您可以执行以下操作:

    $(document).ready(function(){   
        $('.redeemOptions').on('change', function(){
            var value = $(this).val();
            var status = (value == 'CD') ? true : false;
            $(this).closest('tr').children()[0].childNodes[0].checked = status;
        });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
    <table>
    <tbody>
        <tr>
      <td><input type="checkbox" name="userSelection[]" ></td>
      <td>ring1</td>
      <td>2014-09-28</td>
      <td>type1</td>
      <td>   
          <div class="col-lg-8">
                <select name="type" class="form-control redeemOptions">
                <option value="None">None</option>
                <option value="CD">CherieDori Credit (CD)</option>
                <option value="Amex">American Express Card (Amex)</option>
            </select>
        </div>
      </td>
    </tr>
    <tr>
      <td><input type="checkbox" name="userSelection[]" ></td>
      <td>ring2</td>
      <td>2014-09-28</td>
      <td>type2</td>
      <td>   
          <div class="col-lg-8">
                <select name="type" class="form-control redeemOptions">
                <option value="None">None</option>
                <option value="CD">CherieDori Credit (CD)</option>
                <option value="Amex">American Express Card (Amex)</option>
            </select>
        </div>
      </td>
    </tr>
    </tbody>
    </table>
    </form>

    编辑:

    您还应该将销售 ID 放在复选框上:

    <td><input type="checkbox" name="salesIds[]" value="<?php echo $sale['id']; ?>" /></td>
    

    然后,在 JS 上:

    $('.selection').on('click', function(){
        var checked = $('input[name="salesIds[]"]:checked').serialize();
        window.location.href = 'actions.php?j=5&' + checked;
    });
    

    最终在 PHP 上将处理这个,salesIds 将是一个数组:

    $_GET['salesIds'] // is now an array
    

    【讨论】:

    • 完美,谢谢。还有第二部分的问题。我如何按下按钮,获取所有行的列 ID,即它是第一行或第二行。当javascript if语句为真时,我可以创建一个全局数组来存储我。但我该怎么做
    • @MuhammadUmar 能不能解释一下,不明白你的意思,能给个例子吗?
    • 你好@MuhammadUmar,你表中ID 的名称是什么? $sale["salesId"];
    • 我目前已添加 '> 这样就可以得到 id 作为 tr 的值
    • @MuhammadUmar 我做了一些修改
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签