【问题标题】:HTML Form Number Type Unique User Input with Javascript and PHP使用 Javascript 和 PHP 的 HTML 表单编号类型唯一用户输入
【发布时间】:2015-08-10 21:03:15
【问题描述】:

这个问题是我之前提出的问题 (HTML Form Number Type Unique User Input) 的后续问题,但现在我正在使表单更具动态性。

以下表格要求用户列出 3 种最喜欢的音乐流派:

<form id="genre" name="genre" method="post" action="musicsell.php">
  <input type="checkbox" name="genre[]" id="Rap" value="Rap"/>Rap<br />
  <input type="checkbox" name="genre[]" id="HipHop" value="HipHop"/>HipHop<br />
  <input type="checkbox" name="genre[]" id="RnB" value="RnB"/>RnB<br />
  <input type="checkbox" name="genre[]" id="Rock" value="Rock"/>Rock<br />
  <input type="checkbox" name="genre[]" id="Jazz"value="Jazz"/>Jazz<br />

  <p>
    <input type="submit" value="Next">
    <br />
  </p>
 </form>

从那里,我使用以下代码来确保他们只使用数字 1,2 和 3 以及一个 foreach 循环来列出他们检查过的内容,但是我如何确保他们不会两次使用相同的数字?

<body>
 The genre(s) you selected are: <br />
 <form id="form1" name="form1" method="post" action="musicresults.php">
  <?php
   $name = $_POST['genre'];

   if(isset($_POST['genre'])) {
    foreach ($name as $genre) {  
     ?>

     <input type="number" required="required" id="<?php echo $genre ?>" name="music[<?php echo $genre ?>]" max="3" min="1" />
     <?php echo $genre ?>
     <br /> 

     <?php
    }
   }
  ?>

  <input type="submit" name="button" id="button" value="Submit" />
 </form>
</body>

这是上一个问题中的旧 javascript 代码,但现在 id="" 是由上面的 PHP 生成的:

 <script type="text/javascript">
    function item() {
        cake = Number(document.getElementById('cake').value);
        twizlers = Number(document.getElementById('twizlers').value);
        taffy = Number(document.getElementById('taffy').value);
        if (cake == twizlers) {
           alert("Some alert cake or twizlers");
        return false;
    } else if (twizlers == taffy) {
        alert("Some alert taffy or twizlers");
        return false;
    } else if (taffy == cake) {
        alert("Some alert taffy or cake");
        return false;
    } else {
        return true;
    }
  }
 </script>

现在怎么做?它必须在foreach循环中吗?任何建议将不胜感激。

【问题讨论】:

    标签: javascript php html forms unique


    【解决方案1】:

    除非他们破解表单或构建自己的 POST 提交,否则他们不能“使用”同一个复选框两次。但您可以轻松检查重复值:

    $counts = array_count_values(array_values($_POST['genre']));
    foreach($counts as $form_value => $cnt) { 
        if ($cnt > 1) { 
            echo "$form_value was entered more than once";
        }
    }
    

    【讨论】:

    • 此代码在提交时有效吗?有没有我可以使用的 javascript 客户端版本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2014-11-05
    • 2017-04-17
    • 2021-01-02
    • 2021-02-25
    • 1970-01-01
    相关资源
    最近更新 更多