Javascript JS中复选框的表单验证

Javascript JS中复选框的表单验证,javascript,html,validation,Javascript,Html,Validation,我正试图做一个家庭作业,但遇到了一些问题。我应该用Javascript验证表单。现在,我试图确保用户至少选中了一个复选框(四个选项中的一个),以便表单提交。(我已经完成了其他验证部分的工作,因此这部分代码似乎存在局部问题。) 这是复选框表单的html格式: <fieldset> <input type="checkbox" name="boxes" id="member" value="member" /> <label for="member"&g

我正试图做一个家庭作业,但遇到了一些问题。我应该用Javascript验证表单。现在,我试图确保用户至少选中了一个复选框(四个选项中的一个),以便表单提交。(我已经完成了其他验证部分的工作,因此这部分代码似乎存在局部问题。)

这是复选框表单的html格式:

<fieldset>
    <input type="checkbox" name="boxes" id="member" value="member" />
    <label for="member">I'm a member.</label>

    <p><input type="checkbox" name="boxes" id="newsletter" value="newsletter" />
    <label for="newsletter">Please send me your monthly newsletter.</label></p>

    <p><input type="checkbox" name="boxes" id="preshow" value="preshow" />
    <label for="preshow">I'm interested in hearing about pre-show events.</label></p>

    <p><input type="checkbox" name="boxes" id ="none" value="none" />
    <label for="none">None of the above.</label></p>

我是会员。

请把你的月刊寄给我

我很想听听演出前的活动

以上都没有

这是我写的,试图用Javascript验证它:

function validateForm() {
  var checkBoxes = document.getElementsByName("boxes");
  for (var i=0; i < checkBoxes.length; i++) {
    if (checkBoxes[i].checked === true) {
        return true;
        break;
    } else {
        alert("At least one checkbox must be selected.");
        return false;
    }
  }
}
函数validateForm(){
var复选框=document.getElementsByName(“框”);
对于(变量i=0;i
这不起作用;无论是否选中框,表单都会提交。 我真的很想在这里得到一些帮助,因为我不知道我做错了什么。正如我所说,这个问题似乎存在于这个特定代码的某个地方,因为在单独的代码块中的其他验证确实有效

这是完整的HTML:

<!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8"/>
    <title> hw5 </title>
    <link rel ="stylesheet" href="form.css"/>
    <script src="form.js"></script>
    <script src="states.js"></script>
    <!--<script src="browser.js"></script>-->
    </head>
    <body>
    <div>
    <h1><b>Buy your tickets online</b></h1>
    <form name="theForm" method="post" action="https://cs101.cs.uchicago.edu/~sterner/show-data.php" onsubmit="return validateForm(this)">
        <section id="name-and-address">
        <fieldset>
            <h2 class="name">Full name</h2>
                <label for="firstname">First name:</label> <input type="text" name ="firstname" id="firstname" autofocus="autofocus" />
                <p><label for="lastname">Last name:</label> <input type="text" name ="lastname" id="lastname" /></p>
        </fieldset> 
        <fieldset>
            <h2 class="Billing Address">Billing Address</h2>
                <label for="street">Street name and number:</label>
                    <input type="text" name ="street" id="street" />
                <p><label for="city">City:</label>
                    <input type="text" name="city" id="city" /></p>
                <p><label for="state">State:</label> 
                    <select id="state" name="state">
                    </select></p>
                <p><label for="zip">Zip code:</label>
                    <input type="text" name="zip" id="zip" /></p>
        </fieldset>
        </section>
        <section>
        <aside>
        <fieldset>
            <h2 class="payMethod">Method of Payment</h2>
                <p class="row">
                    <input type="radio" id="pay-pal" name="payment" value="pay-pal" />
                    <label for="pay-pal">PayPal</label>
                </p>
                <p class="row">
                    <input type="radio" id="credit" name="payment" value="credit" />
                    <label for="credit">Credit Card</label>
                </p>
        </fieldset> 
        <fieldset>
                <input type="checkbox" name="boxes" id="member" value="member" />
                    <label for="member">I'm a member.</label>
                <p><input type="checkbox" name="boxes" id="newsletter" value="newsletter" />
                    <label for="newsletter">Please send me your monthly newsletter.</label></p>
                <p><input type="checkbox" name="boxes" id="preshow" value="preshow" />
                    <label for="preshow">I'm interested in hearing about pre-show events.</label></p>
                <p><input type="checkbox" name="boxes" id ="none" value="none" />
                    <label for="none">None of the above.</label></p>
        </fieldset>
        <fieldset>
                <p><label for="email">Email address:</label>
                    <input type="email" name="email" id="email" /></p>
        </fieldset>
        </aside>
        </section>
        <section id="submit">
        <fieldset>
            <input type="submit" value="Buy my tickets."/>
        </fieldset>
        </section>
</div>
</body>
</html>

hw5
网上买票
全名
名字:
姓氏:

帐单地址 街道名称及编号: 城市:

声明:

邮政编码:

付款方式

贝宝

信用卡

我是会员。 请把你的月刊寄给我

我很想听听演出前的活动

以上都没有

电邮地址:


您遗漏了调用函数的部分。这实际上只是一个更大的验证函数的一小部分,在提交表单时会调用该函数,因此,在我进入复选框之前,我在标记()的HTML中编写了调用。。。它对验证函数的其他部分很好,但对这个部分不行。用一个函数来验证一堆东西有意义吗。。?也许这就是事情不顺利的原因?我应该把它分成几个功能?你说的“提交表单时”是什么意思?在
POST
时间,已经太晚了。您应该在更改表单的任何字段时执行整个验证操作,并且仅当验证通过时才启用
提交
按钮…我的意思是,当单击提交按钮时,验证功能将运行,如果出现任何错误,则应停止提交