Currently there is no way to have an empty drop down list option appear as your first option. For example if I wanted to create a required field for shirt colors I would have to do something like follows:
– Red Green Blue
This is alright, except on the front end I can’t say {if shirt_color}…{/if} because shirt color will always be filled (even if it’s “–”).
Therefore I built an extension that will convert “–” into an empty form value. The displayed value however is customizable through the extension’s settings.
Would there be a way (or IS there a way) to make the drop down’s value different than what the option actually shows on the screen (this is for a custom field in the Control Panel)? Just curious, say for states. I’d like my drop down to show: Select… Alaska Alabama Michigan [etc]
But I’d like the values to be: NULL AK AL MI [etc]
Maybe an extension that allows for a PHP-type array thing? So, in the drop down field I might have: Select…=>NULL Alaska=>AK Alabama=>AL Michigan=>MI
etc.
Edit… Mark…your extension seems to be doing exactly what I was looking for though I believe these results are probably unintended and due to my improper usage.
I came across your extension while looking for a solution to provide Custom Dropdown Fields the ability to group selection items; thus providing a label for each group of selections to provide a more intuitive experience for the user entering data via the Weblog Publish Panel.
Maybe I’m wrong about my application but, it seems your intent with this extension was not aimed at the back end experience? Could you clarify?
What I was doing was ignoring ignoring the use of “–” to achieve an empty option which, if I’m correct, the extension is supposed to replace with the “keyword” entered in the extension settings (is this correct?).
In my Custom Dropdown when setting the selections I added a label
// with some testing it turns out that quotes rendered to the Dropdown in the
// Publish page so I eliminated.
<optgroup label=Identities>
So what was entered in for the dropdown selections was
<optgroup label=Identities>
Logo
System
</optgroup>
<optgroup label=Print>
Ad
Book cover
Brochure
Music CD
</optgroup>
And the result is that I get the desired label in the dropdown applied to the publish page: Identities.
Now, the thing is it’s not applied correctly - though the page validates. What occurs is the
<optgroup label=Identities>
entered as a selection for the Custom Dropdown is rendered to the Publish Page mark-up as just that, an option
//rendered Weblog Publish Page
<select name='field_id_3' class='select' >
<option value='<optgroup label=Identities>'><optgroup label=Identities></option>
<option value='Logo'>Logo</option>
<option value='System'>System</option>
<option value='' selected='selected'></option>
<option value='<optgroup label=Print>'><optgroup label=Print></option>
<option value='Ad'>Ad</option>
<option value='Book cover'>Book cover</option>
<option value='Brochure'>Brochure</option>
<option value='Music CD'>Music CD</option>
</select>
Wondering what you think about this, since it’s actually not being applied correctly with this (probably unintended) usage?
So this is a great extension and happy to see it! However, I am also using your Multi drop-down list and need to have this Empty Options functionality for that extension. Is this an option??
Never mind! Duh. Intuitively, the extension is built to simply Apple-click off every selection from the list.
I never tried the extension because I didn’t receive any responses by the time I needed to move forward. However, I found a good work around that seems friendly enough.
This is what I did.
In the dropdown menu the first entry I create is ‘na’. So this would be the default value selected.
If a content contributor does not need to use the dropdown… they can simply ignore it.
Then in my templates I would use this code.
{if dropdown_field != "na"}
Here is my {dropdown_field} value.
{/if}
Essentialy making the dropdown only function when NOT EQUAL to ‘na’.
Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.