I have a numerical edit page on a small touchscreen. There's a display field that displays the current value, a keypad, and increase and decrease buttons.
Right now, if the user is using the keypad or arrow keys and the value would exceed the maximum value allowed, the current value is set to the maximum. For example if the maximum value allowed is 9999, then while the user is typing 1,2,3,4,5,6 the value shows 1, 12, 123, 1234, 9999, 9999. At first I thought this was a decent clean indicator of what the maximum value was, and we didn't have any trouble in our preliminary user testing everyone seemed to understand.
However, if you switch units of measure, then one of the maximums turns out to be 1.34. This feedback mechanism then very much looks like a bug. If the user types any number above 1 then suddenly the value reads 1.34. This made it appear like the keypad was broken since basically any button resulted in this apparently random value appearing.
Some ideas I've had to help make the process clearer:
- Round the limit so it seems more obviously a limit (e.g. make the limit 1.00)
- I don't like this solution because it artificially reduces the capability of the machine based on which units you're using.
- Make the increase arrow visually appear disabled whenever the value is at the maximum.
- I should probably do this anyway, but I'm not sure it will be enough, especially if the user is using the keypad and not therefor not paying attention to the arrow keys.
- Make all keypad buttons (except delete) visually disabled when the maximum is reached.
- Again this is probably something I should do anyway, but I'm again not sure if it will be enough, it may still be confusing.
- Make any keypad buttons visually disabled if pressing them would result in a number larger than the maximum.
- This would make it hard to determine the maximum if I disabled the functionality of the buttons, and I don't want to disable the visuals without disabling the functionality.
- Allow (at least temporarily) invalid numbers to be entered.
- I feel like this just kicks the can down the road. I have to deal with the invalid value at some point and I think immediate user feedback is the way to go.
- Pop up a notification / warning
- Ugh... I hate when UI's interrupt me. Also any text added must be translated, so we're trying to keep text to a minimum.
- Flash the value?
Additional related info: The value changes color to indicate when it's being edited, and after a few second timeout, the value is saved (with a little icon indicating the value was saved) and the color returns to normal.