2016-05-27 135 views
1

需要帮助来验证是否至少有一个复选框已选中或未使用java脚本。复选框验证 - 验证至少选择了一个

工作流量:

1.用户选择复选框值

2.After选择的值,如果没有选择复选框值然后用户点击保存按钮

应提出警报以选择至少一个复选框值

这是代码

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> 
+0

你为什么返回false? –

+1

有点不相干,但不要在javascript问题中标记java,它们与另一个没有任何关系。 –

回答

0

您的JavaScript验证()函数看起来像它有一个逻辑上的错误。

当前,只要您找到一个为false的复选框,就会返回false并提醒用户。为了得到想要的结果,只有在检查了所有复选框都是假的(如果一个复选框为真,然后返回true),你才应该返回false。

下面的函数可能接近你正在寻找的东西。

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; 

}

+0

它不工作。是否有任何其他逻辑可用于验证复选框条目? – sound

+0

我在函数的x声明和初始化中修正了一些错误。希望它现在能工作。 –

相关问题