复选框验证 - 验证至少选择了一个

时间:2016-05-27 15:11:54

标签: javascript java jsp

需要帮助验证是否使用java脚本检查了至少一个复选框。

工作流程

1.用户选中复选框值

2.选择值后,用户点击保存按钮

如果未选中任何复选框值,则应引发警报以选择至少一个复选框值

这是代码

products.jsp

<%@page import="java.util.List"%>
    <%@page import="web.Products"%>
    <%@page import="java.util.ArrayList"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
  <html>
<head>
<script type="text/javascript">
function Validate()

    {
        var x[]=document.forms["sform"]["prod"].value;
        for(var i=0;i<x.length;i++){
            if(x[i].type=='checkbox'&&x[i].checked==false)
                {
                    alert("Please select the products available and click save");
                    return false;
                }
        }
    }
</script>
</head>

    <body>
     <form name="sform" method="post" action="Save_Products" onsubmit="javascript:return Validate();"> 
<b>          
            Brand Name:<font color="green">
            <% String brand_name=(String)session.getAttribute("brand_name");
       out.print(brand_name);%> 
        <c:set var="brand_name" value="brand_name" scope="session"  />
       </font></b>         
            <table>            
                <tr>                
                    <th> Products</th> 
                    <th> Description </th>
                </tr>
                <tr>
               <td> <b><%
      List<Products> pdts = (List<Products>) request.getAttribute("list");
      if(pdts!=null){
        for(Products prod: pdts){
           out.println("<input type=\"checkbox\" name=\"prod\" value=\""  + prod.getProductname() + "\">"  + prod.getProductname()+"<br>");
            } %> </b></td>   

            <td><%for(Products prod: pdts){
            out.println("<input type=\"text\" name=\"desc\" style=\"width:50px; height:22px\"/><br/>"); 
        } 

      }  
            %> </td>  

        </tr>
        <br/>
        <br/>
        <tr><td align="center">  <input type="submit" value="Save" name="save"/> </td></tr> 
            </table>
    </form>
    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

您的javascript Validate()函数看起来有逻辑错误。

目前,只要找到一个为false的复选框,就会返回false并提醒用户。要获得所需的结果,只有在检查了所有复选框都为false后才会返回false(如果一个复选框为true,则返回true)。

以下功能可能与您正在寻找的功能相近。

function Validate() {
    var x[]=document.forms["sform"]["prod"].value;
    for(var i=0;i<x.length;i++){
        if(x[i].type=='checkbox'&&x[i].checked==true) {
            return true;
        }
    }
    alert("Please select the products available and click save");
    return false;
}

修改: 更新了代码。声明x数组时会出现语法错误(删除“[]”),我们需要将x初始化为整个数组,因此请从末尾删除“.value”。

function Validate() {
var x=document.forms["sform"]["prod"];
for(var i=0;i<x.length;i++){
    if(x[i].type=='checkbox'&&x[i].checked==true) {
        return true;
    }
}
alert("Please select the products available and click save");
return false;

}