我在 Salesforce (visualforce) 上并使用自定义自动完成 Javascript。element2
我的要求是在从另一个文本字段的建议中进行选择后立即触发对文本字段的自动完成搜索element1
。
由于我需要能够使用键盘滚动浏览自动建议列表,因此我需要专注于特定领域。我目前正在做一个element2.focus()
选择,element1
然后触发自动建议搜索element2
。
此外,在这些字段上,当搜索正在运行并且用户手动关注该字段时,自动建议会折叠 - 这是取消搜索的指示。因此,我无法触发搜索然后调用element2.focus()
以下是在不同浏览器中的体验:
Chrome/Firefox 3.5、4/Safari 5.0.3:
- 从下面的建议中选择一个选项
element1
- 字段更改中的值
- 建议崩溃
- 场模糊,但不确定焦点在哪里。大概
window
即 8:
- 从下面的建议中选择一个选项
element1
- 字段更改中的值
- 建议崩溃
- 场模糊并
element2
集中注意力 - 搜索此字段的触发
此外,上述行为差异仅在使用鼠标单击进行选择时。当使用击键(向上/向下然后输入)时,这在所有浏览器中都可以正常工作。在鼠标和键盘选择上执行相同的 JavaScript 方法集。
我为此找到了一个有趣的“修复” element2.focus()
,例如在 100 毫秒后使用setTimeout()
. 我猜这是因为element1
's onblur 正在破坏element2.focus()
,但我不太乐意使用它。
嗯,有什么想法吗?
代码示例:
//mouseclick handler
function handleMouseClick(event){
element1.value = (event.target)?event.target.textContent:event.srcElement.innerText;
callback();
// kills the children and hides the div containing the suggestions
hideAutoComplete();
}
function callback() {
element2.value = '';
element2.focus();
}