【问题标题】:Validate the checkbox limit to 5验证复选框限制为 5
【发布时间】:2015-04-24 14:17:39
【问题描述】:
<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>

任何人都可以告诉我如何验证此复选框数组。

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。谢谢。我非常需要它:|

【问题讨论】:

  • 它将返回一个值数组,只需使用count

标签: java javascript php jquery mysql


【解决方案1】:

试试这个。您可以限制 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>

【讨论】:

    【解决方案2】:

    你需要这样的东西吗?

    if (isset($_POST['btnsave'])) {
    
    $fruits = $_POST['fruit'];
    
    $count = count($fruits);
    
    if ($count > 5) {
    
    // Error; Only 5 checks allowed
    
    } else {
    
    // Save the data
    
    }
    
    }
    

    【讨论】:

      【解决方案3】:

      当您提交带有括号的字段时,例如您的示例。 name="fruit[]" 当它在 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
      }
      

      【讨论】:

        【解决方案4】:

        如果我的理解没有错,您有超过 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 个复选框中的任何一个时,它将启用所有复选框。

        【讨论】:

          猜你喜欢
          • 2012-07-05
          • 2017-12-24
          • 1970-01-01
          • 2018-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-29
          相关资源
          最近更新 更多