在JQuery(版本3.3.1)复选框实现方面遇到一些麻烦。请参阅下面的代码示例。
问题
除了一个之外,选择每个组合都能完美无缺,我似乎无法查明代码中的缺陷。选择非工作组合时,控制台也不会抱怨。非工作组合:
[✓]复选框1
[]复选框2
[✓]复选框3
[✓]复选框4
要记住的事情:
jquery-3.3.1.js
。因为源代码引用了JQuery 2.1.3,所以我还下载了未压缩的 jquery-2.1.3.js
文件。引用任一JQuery版本时,相同的复选框组合失败。似乎实际的源代码存在一些缺陷,但似乎无法确定任何语法错误或任何遗漏的东西。
$("#doIt").on("click", function () {
var check = $('input:checked:checkbox[name=cc]');
var id = '';
$.each($(check), function (index) {
id += $(this).attr('id');
});
if ($(check).is(':checked')) {
switch (id) {
case 'c1':
console.log(id);
break;
case 'c2':
console.log(id);
break;
case 'c3':
console.log(id);
break;
case 'c4':
console.log(id);
break;
case 'c1c2':
console.log(id);
break;
case 'c1c3':
console.log(id);
break;
case 'c1c4':
console.log(id);
break;
case 'c2c3':
console.log(id);
break;
case 'c2c4':
console.log(id);
break;
case 'c3c4':
console.log(id);
break;
case 'c1c2c3':
console.log(id);
break;
case 'c1c2c4':
console.log(id);
break;
case 'c2c3c4':
console.log(id);
break;
case 'c1c2c3c4':
console.log(id);
break;
}
} else {
alert('Un Checked');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="c1" name="cc" />
<label for="c1"><span></span>Check Box 1</label>
<br />
<input type="checkbox" id="c2" name="cc" />
<label for="c2"><span></span>Check Box 2</label>
<br />
<input type="checkbox" id="c3" name="cc" />
<label for="c3"><span></span>Check Box 3</label>
<br />
<input type="checkbox" id="c4" name="cc" />
<label for="c4"><span></span>Check Box 4</label>
<br />
<button id="doIt" type="button">Click Me!</button>
答案 0 :(得分:0)
这与JQuery无关。您只是错过了与该组合匹配的case
分支。
您需要添加:case c1c3c4:
。
$("#doIt").on("click", function () {
var check = $("input[name='cc']:checked");
var id = '';
$.each($(check), function (index) {
id += $(this).attr('id');
});
if ($(check).is(':checked')) {
switch (id) {
case 'c1':
console.log(id);
break;
case 'c2':
console.log(id);
break;
case 'c3':
console.log(id);
break;
case 'c4':
console.log(id);
break;
case 'c1c2':
console.log(id);
break;
case 'c1c3':
console.log(id);
break;
case 'c1c4':
console.log(id);
break;
case 'c2c3':
console.log(id);
break;
case 'c2c4':
console.log(id);
break;
case 'c3c4':
console.log(id);
break;
case 'c1c2c3':
console.log(id);
break;
// You were missing this
case 'c1c3c4':
console.log(id);
break;
case 'c1c2c4':
console.log(id);
break;
case 'c2c3c4':
console.log(id);
break;
case 'c1c2c3c4':
console.log(id);
break;
}
} else {
alert('Un Checked');
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="c1" name="cc" />
<label for="c1"><span></span>Check Box 1</label>
<br />
<input type="checkbox" id="c2" name="cc" />
<label for="c2"><span></span>Check Box 2</label>
<br />
<input type="checkbox" id="c3" name="cc" />
<label for="c3"><span></span>Check Box 3</label>
<br />
<input type="checkbox" id="c4" name="cc" />
<label for="c4"><span></span>Check Box 4</label>
<br />
<button id="doIt" type="button">Click Me!</button>
&#13;