I was faced the following problem. We have a search engine in our web application that makes it possible to filter results by selecting a single filter from each set, with four-five sets given - let's say, we can choose one language from ten given, one category from seven given, and one whatever else - let's say, a color, one out of six. In our particular case this kind of filter function is an absurd idea, however this is not the point. One of the aforementioned criteria in our filters is price. Since the typical workflow with each of the filters is that filter is added to the search right after the user clicks on it, we had to break it, because of the obvious need of entering some data from keyboard.
This is how it's supposed to look (and, in our sad case, can't be changed)*:
download bmml source – Wireframes created with Balsamiq Mockups
Typically, a user sets the radio button to an appropriate state, and then enters the values. However, this is a happy case scenario; there's a few more of them
- User mistakenly enters fixed rate, but hourly rate is set; apply button is pressed and no-result search of "$1500 per hour" appears (and the other way round)
- User is less likely to switch fixed to hourly rate, because on the basis of previous experience, he might think the change itself will cause the page to reload
One of the most important guidelines for our UX is to minimize chances of showing no results on the search results page, so these are not the best options...
The client, who is the official world champion in micromanagement, said he wants these from/to fields to get reseted to zero after the user changes fixed/hourly radio button. This, obviously, makes no sense in the scenario when the user accidentally enters values for "hourly price" before switching the radio button (and this also forces him to fill them again...).
In these conditions, I simply ran out of ideas for answer to the question: how do I optimize this price process?
*Feel free to suggest answers involving changes, the client might change his mind.