如何在选择选项

时间:2017-03-06 09:55:11

标签: javascript php jquery html5 validation

我有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

现在,如果用户在value1中选择了Input1,那么他就无法在其他value1中选择select fields

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

2 个答案:

答案 0 :(得分: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';
}

答案 1 :(得分:1)

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

<?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 Validators

  

不要重新发明轮子,除非你计划更多地学习轮子