2017-03-06 39 views
0

我有6个选择输入字段和所有6个输入字段具有相同的选项值重复的值,但我想,每一个选择输入值应为如如何为您在选择选项

独特输入图5和6的输入是可选的输入场,但如果它们被填充然后如果用户在选择Input1它们value1应验证为唯一值

Input1 Input2 Input3 Input4 Input5 Input6 

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

现在那么他不能在其他地方选择value1select fields

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

+0

,你打算在客户端或服务器端进行验证? – Naincy

+0

我只想要一种方法来轻松地做到这一点,然后我会去服务器和浏览器端 –

+0

这听起来像使用JavaScript/jQuery的普通使用。提示:'更改('')'http://api.jquery.com/change/ – JustOnUnderMillions

回答

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'; 
} 
+0

正如我所说,2个字段是可选的,如果用户只提交4个字段或他只提交了5个。 –

+0

@AniketSingh更新了我的答案处理可选字段 – Naincy

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校验

不要重新发明轮子,除非你打算学习更多关于轮子