2015-02-23 30 views
-2
<html> 
    <head> 
     <title>HTML Checkbox</title> 
    </head> 
    <body> 



    enter code here 
    <h2> Pick your most favorite fruits: </h2> 


    <form name="fruitcheckbox" action="fruits.php" method="POST"> 


     <input type="checkbox" name="fruit[]" value="orange"> Orange 
     <input type="checkbox" name="fruit[]" value="apple"> Apple 
     <input type="checkbox" name="fruit[]" value="grapefruit"> Grapefruit 
     <input type="checkbox" name="fruit[]" value="banana"> Banana 
     <input type="checkbox" name="fruit[]" value="watermelon"> Watermelon 
     <br> 
     <input type="submit" value="Save" name="btnsave"> 
    </form> 

驗證複選框限制到5

任何人都可以給我一個想法如何驗證這個checkobox陣列。

if(isset($_POST['btnsave'])) 

{ $fruit = $_POST['fruit']; 
    $values = array(); 
    foreach($chkbox as $selection) 
    {  if(in_array($selection, $fruit)) 
      { $values[ $selection ] = 1; } 
     else 
      { $values[ $selection ] = 0; } 
      } 

這是我的代碼部分。我想限制複選框爲5.謝謝。我非常需要:|

+0

它將返回值的數組,只需用'count' – Ghost 2015-02-23 09:44:47

回答

0

試試這個。你可以限制在JavaScript本身。所以你可以限制用戶在客戶端不需要去服務器端。它會限制你4項。您可以更改的數量在腳本增加值

<script type="text/javascript"> 
     function validateitem(){ 
      var items = document.forms['fruitcheckbox']; 
       var inc = 0; 
       var i; 
       for (i = 0; i < items.length; i++) { 
        if (items[i].checked) { 
         inc++; 
        } 
       } 
       if(inc == 0) { 
        document.getElementById("limitmsg").innerHTML = 'Select atleast 1 item.'; 
        return false; 
       } else if(inc>4){ 
        document.getElementById("limitmsg").innerHTML = 'You can select only 4 items.'; 
        return false; 
       } 
       } 
     </script> 
    <h2>Pick your most favorite fruits:</h2> 


    <form name="fruitcheckbox" action="fruits.php" method="POST" 
     onsubmit="return validateitem();"> 


     <input type="checkbox" name="fruit[]" value="orange"> Orange <input 
      type="checkbox" name="fruit[]" value="apple"> Apple <input 
      type="checkbox" name="fruit[]" value="grapefruit"> Grapefruit <input 
      type="checkbox" name="fruit[]" value="banana"> Banana <input 
      type="checkbox" name="fruit[]" value="watermelon"> Watermelon <br> <span 
      style="color: red" id="limitmsg"></span><input type="submit" 
      value="Save" name="btnsave"> 
    </form> 
+0

它現在工作。感謝您的幫助!謝謝!! :) – 2015-02-23 16:50:34

0

你需要這樣的東西嗎?

if (isset($_POST['btnsave'])) { 

$fruits = $_POST['fruit']; 

$count = count($fruits); 

if ($count > 5) { 

// Error; Only 5 checks allowed 

} else { 

// Save the data 

} 

} 
0

當你提交帶括號的字段,如你的例子。名稱=「水果[]」它將是一個數組,當它在後端接收到的PHP。 然後,您可以只使用這樣的:

if(isset($_POST['fruit']) && count($_POST['fruit']) > 5) { 
    // add your error message 
} else { 
    // Everything is fine as long as you dont have to select atleast one of them 
} 
+0

它的工作現在。感謝您的幫助! :) – 2015-02-23 16:51:35

0

如果我的理解是沒有錯的,你有更多然後5個複選框,並且希望用戶限制到只檢查5複選框。

如果是這種情況,那麼下面的代碼可能會幫助你。

$("input[name='fruit[]']").change(function(e) { 
     if($('input[name="fruit[]"]:checked').length==5) { 
      $("input[name='fruit[]']:not(:checked)").attr("disabled", true); 
     } else { 
      $("input[name='fruit[]']:not(:checked)").attr("disabled", false); 
     } 
}); 

上面的代碼將允許你檢查只有5複選框,當用戶選中複選框5日將禁用其餘未選中的複選框。每當用戶取消選中5個複選框中的任何一個時,它將啓用所有複選框。