2016-05-27 189 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聲明和初始化中修正了一些錯誤。希望它現在能工作。 –

相關問題