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:

  1. It clutters up the screen with a feature that won't be necessary more often than not
  2. It requires a lot more work and attention from the user, distracting them from the task of sending out the email
  3. 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.


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.

  • If you have access to both the backend and frontend (and it seems from the question you do), then you can add a delete option.
    – ArtOfCode
    Commented Aug 14, 2014 at 23:57
  • We didn't implement the control, and it would be an unreasonable amount of work to dissect the code just to add this little functionality. So while we can technically do that, it's an unreasonable approach for us. We're looking for a solution that explicitly avoids needing to modify the control itself.
    – Jack
    Commented Aug 15, 2014 at 0:05
  • I have a clear history button that just clears the entire history. Not sure you can do it but is there a way to determine the email was not valid and not put it on the history.
    – paparazzo
    Commented Aug 15, 2014 at 21:33

1 Answer 1


You should try to reject possible invalid entries before they get stored to your backend. For the simple reason that no additional controls are required and you can do this completely without any additional user interaction.

And as you're saying that it would solve 99% this way and it's a monkeypatch after all, this has to be your first step. If the remaining 1% turn out to be 50%, you should reconsider again. But again, I would avoid additional input/validation controls that require user interaction. Because after all, they're just interested in selecting the correct e-mail address, not to delete wrong ones.

  • I agree with msparer's answer: If you're storing entered entries in the backend, it makes sense to reject invalid entries before you do so. In the case of email addresses, this is fairly easy to do as they follow a set format (en.wikipedia.org/wiki/Email_address#Syntax - RFC documents linked to). In the case of PHP, you can use filter_var($input, FILTER_VALIDATE_EMAIL). Second 'avoid additional input/validation controls' because gods forbid your user has to think about anything. There's good reason Steve Krug's book's titled "Don't Make Me Think". Commented Dec 12, 2014 at 20:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.