表单已禁用选择选项作为默认选项而不发送任何要验证的内容

I have a form like so:

<select name="employment">
    <option disabled="" selected="">-- What is your employment status --</option>
    <option value="employed">Employed</option>
    <option value="self_employed">Self Employed</option>
</select>

In PHP I am running through each of the $_POST variables and then checking if they have a value. If not I then add that field to the array for an error message.

The issue is that if I leave the default 'disabled' message selected nothing is passed through a post value so theres nothing for me to validate.

If I print_r my $_POST variable then it contains no 'employment' field unless I select an option.

How can I solve this?

<select name="employment">
    <option disabled selected>-- What is your employment status --</option>
    <option value="employed">Employed</option>
    <option value="self_employed">Self Employed</option>
</select>

disabled attribute

  1. The disabled attribute is a boolean attribute.
  2. When present, it specifies that an option should be disabled
  3. A disabled option is unusable and un-clickable.

Syntax:

<select disabled> 

Not

<select disabled="">

In case of XHTML, syntax differs like

<select disabled="disabled">

hidden attribute

So, If you want to validate it. Use hidden in option.

<select name="employment">
    <option hidden>-- What is your employment status --</option>
    <option value="employed">Employed</option>
    <option value="self_employed">Self Employed</option>
</select>

When, nothing got selected, then it will output as -- What is your employment status --

<?php
echo $Employment=$_POST['employment'];
?>

Output: -- What is your employment status --

So, Now you can easily use your validation in dropdown

For more info, click disabled attribute - W3 Schools

Try this:

 <select name="employment">
        <option disabled="" selected="" value ="">-- What is your employment status --</option>
        <option value="employed">Employed</option>
        <option value="self_employed">Self Employed</option>
    </select>

PHP:

if(empty($_POST['employment'])){
  return false;
}else {
  // I got value;
}