javascript - 如何设置复选框优先级?
问题描述
此处提供了一个常用复选框。.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。
解决方案
出现您的问题是因为您有两个不同的事件侦听器做自己的事情。最后一枪是获胜的。为什么不将您的逻辑结合到一个听众中呢?
我建议使用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', '');
}
});
推荐阅读
- flutter - 按字母顺序对文件进行排序
- python - 为什么 Python 函数会在调用之间“记住”可选参数的值
- hibernate - 如何在使用spring数据和jpa hibernate保存具有一对多关系的实体时避免唯一键违规?
- web-scraping - Splinter- Web Scraping href by find_partial_text
- reactjs - mobx 动作功能不改变存储值
- .htaccess - 如何使用 htaccess 从 URL 中删除特定文件夹名称
- extract - Splunk:如何使用正则表达式直接在搜索命令中提取字段?
- python - 如何将点连接到最近的多边形边界
- javascript - 将 useState 与对象数组反应
- c++ - C++ 和 PowerShell:带有 ANSI 颜色的 std::cout 奇怪间距