Overall it looks pretty clean,
- I'd like to see some comments on the functions so I know what they do without having to read the code, you could use JSDoc for this.
- I'd recommend explicitly using Design By Contract or Defensive Programming so the users of the code know what to expect. Which one of these you choose will determine what you put in the comments.
- Get the tabbing fixed on the CSS file.
- Use constants where you have code like this: "e.keyCode === 13" To
e.keyCode === 13
to make the meaning clearer. - Ideally pull the text that is shown to the user out into a language file that defines appropriate variables, so that if you want to port to another language, you only have to send that to the translator, not the code.