# Suggest:

## Features:

1. 提示补全基本功能
2. 完全跨域
3. 小巧精简，仅依赖 ks-core, 压缩后不超过 9k
4. 支持所有 A 级浏览器
5. cache 功能
6. 支持键盘控制：上下选择及回车后直接提交，ESC 键关闭
7. 支持鼠标控制：鼠标选择和点击提交功能
8. [DELAY] 支持匹配文字加亮
9. [DELAY] 动画效果
10. [DELAY] 在提示层中显示第一个搜索结果
11. [DELAY] 整合本地表单的提示记录
12. [DELAY] 关键词的模糊匹配提示功能

## Test Cases:

1. 基本功能：输入时有提示，键盘操作，鼠标操作，点击提交按钮可正常提交
2. 用 Del 或 Backspace 键将输入清空时，提示层隐藏
3. 当返回结果为空时，提示层隐藏
4. 点击提示层外面，能关闭提示层
5. ESC 键能关闭提示层。并且当有选中项时，再次打开能还原输入值
6. 鼠标悬浮在提示层，继续输入时，取消选中项
7. 服务器超慢的处理（抛弃旧请求，只显示最新结果）
8. 鼠标选中某项 + 点击 or 键盘选中某项 + 回车 时，会触发 itemSelect
9. 先用鼠标选中某项，然后从侧边绕过提示层移动到输入框，ENTER 提交，不触发 itemSelect
10. 服务器超时和返回错误数据时的容错
11. 鼠标点击选中，触发表单提交时，能触发 form 的 onsubmit 事件
12. ie6 下，能覆盖 select
13. 在主流输入法开启时测试
14. 在所有 A 级浏览器下测试
15. 持续按下 DOWN/UP 键时，选中操作流畅自然（注意 Opera 下无效）
16. 在提示层任意处按下鼠标，保持按住状态，移动到提示层外释放鼠标，这时输入框应该保持 focus 状态
17. 在提示层 A 项处按下鼠标，移动到 B 处释放，不触发 itemSelect
18. 在提示层 A 项处按下鼠标，移动鼠标到其它地方，最后移动回 A 处释放，触发 itemSelect
19. 输入法开启，通过 enter 键输入英文时，不会触发提交
20. 选中某项，ESC 键关闭，再次通过 keydown 打开时，能保持原来的选中项
21. 没有选中项，ESC 键关闭，再次通过 keydown 打开时，依旧没有选中项
22. 当输入框为空时，按下 PgDn/PgUp/Home/End/Down/Up 键，输入框失去焦点，页面正常响应控制键
23. onresize 时，位置能自动调整
24. 输入框处于焦点，点击 footer 区域，比如 同店购 三个字，提示层不会关闭
25. 输入框处于焦点，点击 footer 区域的输入框，提示层不会关闭
26. 切花 footer 区域的输入框焦点，提示层不会关闭
27. footer 区域的输入框聚焦时，点击提示层外面，提示层关闭
28. 提示层打开时，点击 iframe 区域，提示层关闭
29. 在提示层点击右键，不会触发关闭或表单提交等操作
30. input 框的宽度动态改变时，提示层显示时宽度自动自适应
31. webkit 下，在输入框中输入文字，按下 UP 键，光标不会跳动到最前面去

## References:

1. Google 搜索建议升级
2. YUI AutoComplete

## Crazy Test:

### dataBeforeRequest 和 dataReturn 事件：( 请输入 pig 和 dog )

### beforeShow 和 itemSelect 事件：

### beforeStart 事件 和 beforeSubmit 事件：

开启提示 关闭提示

### 测试提示层宽度和遮罩：

### 有啊有啊哈哈哈：