我使用Ajax.Autocompleter组件,它很好用 - 在一些浏览器中除了&符号。问题在于,不是将&符号打印到搜索字段中,而是充当ajax建议列表中的“向上”箭头。这使我的用户无法在搜索框中输入带&字符的名称。通过'&'和')'禁用滚动浏览Ajax.Autocompleter建议列表
http://github.com/madrobby/scriptaculous/wikis/ajax-autocompleter
特定行为的情况:
如果我尝试输入符号到我的搜索栏中显示与建议列表之前,该符号被添加到搜索领域,一切都好。
如果我尝试建议列表后键入符号已经可见,它将导航到列表的末尾,而不是,并没有将添加到搜索栏(浏览器)。
如果我在IE11中重复这种情况,它也会导航到列表的末尾,但也会将和号添加到搜索字段。但是,在这种情况下,ajax搜索不会被触发 - 建议列表将保持不变,因为在我点击'&'键,之前,无论搜索字段不是以&结尾。
Firefox只是将'&'字符添加到搜索框并刷新自动填充建议列表。正如我所料。
通过试验和错误,我注意到:
- 当我在Chrome中打开F12,以及调试JavaScript中,符号被印刷的,而不是通过建议列表导航。当调试关闭时,它不会打印任何内容并导航。
- 如果我使用ctrl + v将&符号粘贴到搜索字段中,它在所有浏览器中都可以正常工作。另一方面,left + 38与上面提到的一样,正常键。
我的代码:
<input name="searchTxt" id="searchTxt" type="text" autocomplete="off" />
<div id="autocompleteResults" style="display:none;border:1px solid black;background-color:white;text-align:left;"></div>
<script type="text/javascript" language="javascript" charset="utf-8">
new Ajax.Autocompleter('searchTxt','autocompleteResults','someUrlToGetAutocompleteResults', {});
</script>
唯一的线索,我能找到到目前为止是相当弱:
- 其在Chrome和YouTube搜索隐约类似符号的问题有人https://productforums.google.com/forum/#!topic/chrome/mpt4fkaAQPg
- 关于Ajax.Autocompleter的另一个StackOverflow线程,但相当无关How do I make an Ajax.Autocompleter perform a request without typing?
感谢任何帮助 - 我将更详细地研究Ajax.Autocompleter项目,但由于这看起来也可能与浏览器有关,所以我希望有人可能至少有部分答案。