选中复选框时,使用jQuery更改下拉菜单

Using jQuery to change a dropdown menu when a checkbox is checked

本文关键字:jQuery 下拉菜单 使用 复选框      更新时间:2023-09-26

我对如何解决这个问题有点困惑。目前,当用户从下拉列表中更改"数量"时,会选中复选标记,但当其移动到零时,会取消选中复选标记。

var val = 0
  $('.drop').on('change',function() {
    var val = $(this).val();
    if(val > 0) {
      var product = $(this).attr("prodindex");
      $('#switchName' + product).prop('checked', true);
    }
    else {
      var product = $(this).attr("prodindex");
      $('#switchName' + product).prop('checked', false);
    }
  });

表单的一部分:

<input class='check' id='switchName0' type='checkbox'>
                      <label for='switchName0'></label>
                    </div>
                    <div class='col-lg-8'>
                      <input id="order_products__product_id" name="order_products[][product_id]" type="hidden" value="4" />
                      test
                      <br>
                      <div class='subheader'>$22.00</div>
                    </div>
                    <div class='col-lg-2'>
                      <select class="drop" data-cost-per-unit="2200" id="test" name="order_products[][quanity]" prodindex="0"><option value="0">0</option>
                      <option value="1">1</option>
                      <option value="2">2</option>
                      <option value="3">3</option>
                      <option value="4">4</option>
                      <option value="5">5</option>
                      <option value="7">7</option>
                      <option value="8">8</option>
                      <option value="9">9</option>
                      <option value="10">10</option>
                      <option value="11">11</option>
                      <option value="12">12</option>
                      <option value="13">13</option>
                      <option value="14">14</option>
                      <option value="15">15</option></select>
                    </div>
                  </div>
                </div>
              </div>
            </div>

我想这样做,如果没有选中复选标记,而你选中了它,它会将数量更改为1,如果你取消选中它,它就会变为零。但是,由于我在这里有另一个jquery,如果我使用$('.checkbox').on('change',fucntion(){},它将在每次移动下拉列表时发生变化。这个问题有什么更好的解决办法?

根据我对您的fiddle的测试,以下代码似乎可以工作。复选框和选择都会相互影响。正如您的代码所提示的,此代码假设所有复选框都具有形式为switchName#的id,其中#是一个数字。

不要忘记更改实际代码上的10switchName长度)以匹配您的id。

var $drops = $('.drop');
$('.check').on('change', function() {
    var val = $(this).prop('checked'),
        product = this.id.slice(10);
    $drops.filter(function (i, e) {
        return $(this).attr('prodindex') == product;
    }).val(val ? '1' : '0');
});
$drops.on('change',function() {
    var val = +(this.value),
        product = $(this).attr("prodindex");
    $('#switchName' + product).prop('checked', val > 0);
});