复选框上的验证不起作用

时间:2018-08-15 06:20:11

标签: javascript php css html5

我正在建立一个考勤管理项目。在项目的一种形式中,我有多个复选框。我希望至少要选中一个复选框以提交表单。我尝试使用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>";

5 个答案:

答案 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
}