【问题标题】:How to check for duplicate value in Select options如何在选择选项中检查重复值
【发布时间】:2017-03-06 09:55:11
【问题描述】:

我有 6 个选择输入字段,所有 6 个输入字段都具有相同的选项值,但我希望每个选择输入值对于例如来说应该是唯一的

输入 5 和输入 6 是可选输入字段,但如果已填写,则应验证其唯一值

Input1   Input2   Input3  Input4   Input5  Input6   

value1   value1   value1  value1   value1  value1
value2   value2   value2  value2   value2  value2
value3   value3   value3  value3   value3  value3

现在如果用户在Input1 中选择了value1,那么他不能在其他select fields 中选择value1

我知道我可以使用if elseif else 来做,但它不会那么专业,有没有更好的方法来验证它。

【问题讨论】:

  • 您打算在哪里验证客户端或服务器端?
  • 我只是想要一种方法来轻松做到这一点,然后我会同时使用服务器端和浏览器端
  • 这听起来像是对 javascript/jquery 的简单使用。提示:change('')api.jquery.com/change

标签: javascript php jquery html validation


【解决方案1】:

在一个变量中获取所有字段输入,然后只获取唯一值。

请见下文。这会有所帮助。

if ($_POST) {
  $validate_data = [];
  $is_valid = FALSE; 
  $validate_data[] = $_POST['Input1'];
  $validate_data[] = $_POST['Input2'];
  $validate_data[] = $_POST['Input3'];
  $validate_data[] = $_POST['Input4'];

  // get unique elements from array
  $result = array_unique($validate_data);
  // if array size is equal to no of input fields then means all are unique
  // else it has duplicate values
  if (count($result) != 4 ) {
     $is_valid = FALSE;
  } else {
     // Validate optional fields
     if (isset($_POST['Input5']) && in_array($_POST['Input5'], $result)) {
         $is_valid = FALSE;
      } else if (isset($_POST['Input6']) && in_array($_POST['Input6'], $result)) {
         $is_valid = FALSE;
      } else {
         $is_valid = TRUE;
      }
  }

  echo ($is_valid) ? 'All are unique.' : 'Invalid Data';
}

【讨论】:

  • 正如我所说,如果用户仅提交 4 个字段或仅提交 5 个字段,则 2 个字段是可选的。
  • @AniketSingh 更新了我的答案以处理可选字段
【解决方案2】:

这是我想出来的,但这不是最好的方法。

<?php
if ($_POST) {
    $data = [];
    $data[] = $_POST['Input1'];
    $data[] = $_POST['Input2'];
    $data[] = $_POST['Input3'];
    $data[] = $_POST['Input4'];

    //optional values
    if ("" == trim($_POST['Input5'])) {
        $data[] = $_POST['Input5'];
    }
    if ("" == trim($_POST['Input6'])) {
        $data[] = $_POST['Input6'];
    }

    //count post elements
    $count = count($data);

    // get unique elements from array
    $result = array_unique($data);

    if (count($result) !== $count) {
        echo 'Duplicated data';
    } else {
        echo 'All are unique';
    }
}

我认为更好的解决方案是研究一些 Javascript 验证器

不要重新发明轮子,除非你打算更多地了解轮子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多