Due to browser compatibility reasons and some issues with specific forms, in one of the products I'm working on we included a custom control for autocompletion of the Recipient field of an email sending form. The control remembers input you've entered already and lets you select one, but it does not let you delete items from the drop down list so they stop getting suggested. This is a problem if the user enters the wrong email address, or a completely invalid one, as it will permanently show up in the list of suggestions. I had a discussion with my boss about how to solve the problem.
My suggestion was for the server backend that's responsible for storing the autocomplete entries (the control just fetches an array of strings via AJAX, and the server just saves previously entered ones in a cookie) filter out items that 1) don't match the pattern of a valid email or 2) haven't been selected for a certain amount of time. While this won't allow users to delete individual entries on command, it solves 99% of the problems without hassle for the user and if the user really wants to clear entries they can delete their cookies.
My boss's suggestion was to include a button that would open up a modal dialogue where you could select individual items from the list you wanted deleted. This offers more control to the user.
I'm not sure the button/dialogue solution is the best approach however, because:
- It clutters up the screen with a feature that won't be necessary more often than not
- It requires a lot more work and attention from the user, distracting them from the task of sending out the email
- The autocompletion is supposed to be a monkeypatch anyway, in some browsers where the native autocomplete feature works just fine the control would be not only completely irrelevant, but actually present the user with the illusion they're doing something that is in reality being handled by the browser.
I am by no means whatsoever anything more than an amateur with a curious interest in user experience however, so I was hoping for some more informed thoughts on the matter, as well as concrete explanations of what can go wrong with either approach.
EDIT
Note that although we included the custom autocomplete control, we did not implement it and so we can't go in and change it to include the ability to delete items.