首页 > 解决方案 > 如何设置复选框优先级?

问题描述

此处提供了一个常用复选框。.bucret

如果选择了这两个 id,则将打印该值。.bucret + .engelli

$(".engelli, .bucret").click(function () {
let isBox2Checked = $('.engelli input').is(':checked');
let isBox3Checked = $('.bucret input').is(':checked');

if (isBox2Checked && isBox3Checked) {
    $('#textbox2').attr('value', '1.800,00');
} else {
    $('#textbox2').attr('value', '');
}

如果仅选中.bucret复选框,则写入该值。

      $('.bucret').change(function() {
        if ($('.bucret input').is(':checked')) {
            $('#textbox2').attr('value', '1.950,08');
        } else {
            $('#textbox2').attr('value', '');
        }
    });

});

不幸的是,它不是那样工作的。首先,我选择.engelli id,然后选择.bucret id并将值写入1.950.08。

标签: javascript

解决方案


出现您的问题是因为您有两个不同的事件侦听器做自己的事情。最后一枪是获胜的。为什么不将您的逻辑结合到一个听众中呢?

我建议使用change事件而不是click. 写一个额外的else if语句,看看是否只有 .bucret检查。

$(".engelli, .bucret").on('change', function () {
  let isBox2Checked = $('.engelli input').is(':checked');
  let isBox3Checked = $('.bucret input').is(':checked');

  if (isBox2Checked && isBox3Checked) {
    $('#textbox2').attr('value', '1.800,00');
  } else if (isBox3Checked) {
    $('#textbox2').attr('value', '1.950,08');
  } else {
    $('#textbox2').attr('value', '');
  }
});

推荐阅读