在表单中捕获optgroup标签

my HTML :

    <select name="field" required="true">
  <option value="">Choose ITEM</option>
    <optgroup label="ITEMGROUP 1">
      <option value="item1">item1</option>
      <option value="item2">item2</option>
      <option value="item3">item3</option>
      <option value="item4">item4</option>
      <option value="item5">item5</option>
      <option value="item6">item6</option>
      <option value="item7">item7</option>
    </optgroup>
   </select>

Now I want to grab the value of selected item :

$item = $_POST['field'];

What can I do if I want to grab the optgroup label ? Thanks !

optgroups are only used for client side presentation.

However, if you have a LOGIC to generate the groups, you should also be able to turn the Value into the appropriate group again, using the very same logic, but reversed.

edit: you could also pass the group as a prefix of the value.

something like

     <select name="field" required="true">
  <option value="">Choose ITEM</option>
    <optgroup label="ITEMGROUP 1">
      <option value="ITEMGROUP 1;item1">item1</option>
      <option value="ITEMGROUP 1;item2">item2</option>
      <option value="ITEMGROUP 1;item3">item3</option>
      <option value="ITEMGROUP 1;item4">item4</option>
      <option value="ITEMGROUP 1;item5">item5</option>
      <option value="ITEMGROUP 1;item6">item6</option>
      <option value="ITEMGROUP 1;item7">item7</option>
    </optgroup>
   </select>

and then use a simple explode() statement to get back the group information.

I was trying to do the same thing, but the things got complicated so I opted for a different solution:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<form>
  <input id="hidden" name="hidden" type="hidden" value=""/>
  <select id="field" name="field" required="true">
    <option value="">Choose ITEM</option>
    <optgroup label="ITEMGROUP 1">
      <option value="item1">item1</option>
      <option value="item2">item2</option>
      <option value="item3">item3</option>
      <option value="item4">item4</option>
      <option value="item5">item5</option>
      <option value="item6">item6</option>
      <option value="item7">item7</option>
    </optgroup>
   </select>
</form>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script>
$(document).ready(function(){
  $("#field").change(function(){
    var s = $(this).find(":selected").closest("optgroup");
    $("#hidden").val($(s).attr("label"));
    alert($(s).attr("label"));
  })
});
</script>
</body>
</html>

</div>