我正在建立一个考勤管理项目。在项目的一种形式中,我有多个复选框。我希望至少要选中一个复选框以提交表单。我尝试使用Javascript,但问题是,即使选中了一个或多个复选框,它也会标记警报。
这是我的js代码:
function validat(){
var a = document.getElementsByTagName("checkbox");
var bool=false;
for(var i=0;i<a.length;i++){
if(a[i].checked==true){
bool=true;
}
}
if(bool){
return true;
}
else{
alert("Sorry!Please select checkbox corresponding to students involved in duty leaves.");
return false;
}
这是我的复选框代码:
echo "<input type='checkbox' name=duty[]' value='$row[university_roll_no]'></td></tr>";
答案 0 :(得分:1)
由于您需要至少选中一个复选框,因此您不必遍历表单中的所有复选框。在第一个找到的复选框中,您可以停止。
function validat(){
var checkboxes = document.getElementsByTagName("checkbox");
var atLeastOneCheckBoxIsChecked = false;
for( var i = 0; i < checkboxes.length; i++ ){
if( checkboxes[i].checked == true ){
atLeastOneCheckBoxIsChecked = true;
break;
}
}
if(atLeastOneCheckBoxIsChecked){
return true;
}
else {
alert("Sorry!Please select checkbox corresponding to students involved in duty leaves.");
return false;
}
}
做同一件事的另一种功能方法是使用Array.prototype.some方法:
function validat(){
var atLeastOneCheckBoxIsChecked = document.getElementsByTagName("checkbox")
.some(checkbox => checkbox.checked == true);
if(atLeastOneCheckBoxIsChecked){
return true;
}
else {
alert("Sorry!Please select checkbox corresponding to students involved in duty leaves.");
return false;
}
}
答案 1 :(得分:0)
这里有个例子:
function check() {
var checkboxes = document.querySelectorAll('input[type="checkbox"]');
var checkedOne = Array.prototype.slice.call(checkboxes).some(x => x.checked);
if (!checkedOne) {
console.log('please check at least one box!');
}
console.log(checkedOne);
}
<fieldset>
<legend>Choose some monster features</legend>
<div>
<input type="checkbox" id="scales" name="feature" onClick=check()
value="scales" checked />
<label for="scales">Scales</label>
</div>
<div>
<input type="checkbox" id="horns" name="feature" onClick=check()
value="horns" />
<label for="horns">Horns</label>
</div>
<div>
<input type="checkbox" id="claws" name="feature" onClick=check()
value="claws" />
<label for="claws">Claws</label>
</div>
</fieldset>
答案 2 :(得分:0)
您需要获取class IssueAdmin(admin.ModelAdmin):
list_display = ('issue_id', 'issue_date', 'return_date', 'fine', 'book_name__quantity')
list_filter = ('issue_date',)
search_fields = ('issue_id',)
个元素,并检查input
是否为type
:
"checkbox"
答案 3 :(得分:0)
更改您的行
var a = document.getElementsByTagName("checkbox");
到
var a = document.querySelectorAll('input[type="checkbox"]');
答案 4 :(得分:0)
我希望您使用jQuery
,但是对于您目前拥有的东西,您需要这样做:
var a = document.getElementsByTagName("input");
然后:
if(a[i].type == 'checkbox' && a[i].checked==true){
// Checked alert
}