tags:

views:

169

answers:

6

I've got a select with two 'special' options, a bit like this:

<select>
 <option value="????">Choose one:</option>
 <option value="1">option1</option>
 <option value="2">option2</option>
   ....
 <option value="????">Free input</option>
</select>

When the user selects nothing, I should ignore the input. When the user selects 'free input', the value from a corresponding textbox is used.

I was wondering, which values would you give those options? I figured I should be able to use no value for the first, because that's what it is: no value. But the last option, should I use -1, 0, or something different?

+1  A: 

I would use something that will be understandable to the next developer who will be reading the code. Therefore something like 'freeInput' or 'textFieldLookupValue' could be appropriate

Boris Pavlović
A: 

Why not use "free" and "none". You are not restricted to integer values, so using descriptive values would improve comprehensibility.

Sebastian Dietz
A: 

How are you processing your data?

In C#, I will define a constant to represent the ID, and use this to identify it.

public string CONSTANT_OPTION_FreeInput = "-1";

// Test for value in a different method:
if (selectedValue == CONSTANT_OPTION_FreeInput) {
  // Do Stuff
}

You can do something similar in other languages as well.

Whatever value you use, just make sure that it will be easily understood by yourself and any other developer looking at the code in the future.

Yaakov Ellis
A: 

On the first one, you really don't even need the value attribute present. It'll come up as not being set on the server side regardless.

With regards to the free input choice, I'd go simply with free_input.

Of course, it's all up to you. Just choose something that is meaningful and relates to its purpose. ;-)

Evan Fosmark
A: 

Make the first option an option group instead and then use no value for your "Free input". An option group is not selectable.

Kim
+1  A: 

If the rest of your options has numeric values, choose non-numeric values with "speaking values" for the special options.

This way the server logic can decide with a simple IsNumeric() call what to do, and you are free to add other special options later on.

Tomalak