placeholder
placeholde 导致了 input 多次自动调用 input 事件, focues 时同样会触发 input 事件 导致了我所做的下拉热搜索(带选择标记) 的功能 ,会出现选择无效化。
上 图 1 中,第一次点击选择,把列表第一项 selected 设置为 true, 但是点击按钮后 ,自动触发了input 事件,进行了搜索,所以新数据顶掉了旧数据。从而形成了。选择结果中有该项数据,而该项数据没被选择的错误场景。
建议不要用 placeholde ,自己写个标签替代它,更舒服。
事件源 e
在下拉收起,我选择了监听整个 Windows 的点击事件,然后扣去几个点,其他点都会收起菜单的方式。代码如图 2
但是到了 ie 环境 ,菜单收不起来了,直接报 map 找不到,果然打印 e ,发现它和 webkit 内核下的 e 差别很大。
故而选择了向父节点搜寻的方式,同时发现 ie 不兼容 include 方法, 阻止冒泡要使用 window.event.cancelBubble = true