php表单中的几个选择同名只有一个选中

时间:2016-03-14 12:33:15

标签: php forms select

我有一个包含多个<select>且具有相同名称的表单和一个onChange =“document.forms ['form_mes_reservations']。submit();”对他们所有人。因此,当我从其中一个选择一个选项时,页面会重新加载并完成一些PHP处理。

这是一个例子:

<form method="post" id="form_process">
     <select name="processed" onChange="document.forms['form_process'].submit();">
         <option value="1_choose">Please choose...</option>
         <option value="1_yes">Yes</option>
         <option value="1_no"></option>
     </select>

     <select name="processed" onChange="document.forms['form_process'].submit();">
         <option value="2_choose">Please choose...</option>
         <option value="2_yes">Yes</option>
         <option value="2_no"></option>
     </select>

     <select name="processed" onChange="document.forms['form_process'].submit();">
        <option value="3_choose">Please choose...</option>
        <option value="3_yes">Yes</option>
        <option value="3_no"></option>
     </select>

     <select name="processed" onChange="document.forms['form_process'].submit();">
        <option value="4_choose">Please choose...</option>
        <option value="4_yes">Yes</option>
        <option value="4_no"></option>
     </select>
</form>

我想知道的是:有没有办法知道哪个选择触发了onChange?让我解释一下:在$ _POST ['processed']中,我得到了所有选中的选项,所以如果我只选择了“3_yes”,我会得到这样的结果:

  • 1_choose
  • 2_choose
  • 3_yes
  • 4_choose

结果只能有“3_yes”吗?潜在地,这将是一个非常长的选择列表,我不想检查它们的所有变化......

1 个答案:

答案 0 :(得分:0)

只需将所有选择元素作为数组并检查选中的元素:

HTML:

<form method="post" id="form_process" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <select name="processed[]" onChange="document.forms['form_process'].submit();">
        <option value="1_choose">Please choose...</option>
        <option value="1_yes">Yes</option>
        <option value="1_no"></option>
    </select>

    <select name="processed[]" onChange="document.forms['form_process'].submit();">
        <option value="2_choose">Please choose...</option>
        <option value="2_yes">Yes</option>
        <option value="2_no"></option>
    </select>

    <select name="processed[]" onChange="document.forms['form_process'].submit();">
        <option value="3_choose">Please choose...</option>
        <option value="3_yes">Yes</option>
        <option value="3_no"></option>
    </select>

    <select name="processed[]" onChange="document.forms['form_process'].submit();">
        <option value="4_choose">Please choose...</option>
        <option value="4_yes">Yes</option>
        <option value="4_no"></option>
    </select>
</form>  

PHP:

<?php
    foreach($_POST['processed'] AS $key => $value){
        if(strpos($value, 'choose') !== false){
            unset($_POST[processed][$key]);
        }
    }
    print_r($_POST['processed']);
?>

输出:

Array
(
    [1] => 2_yes
)