Javascript 没有带Typeahead的自由文本

Javascript 没有带Typeahead的自由文本,javascript,twitter-bootstrap,typeahead,Javascript,Twitter Bootstrap,Typeahead,如何使用Twitter的Typeahead插件禁用自由文本输入?我找到的所有示例和配置,用户都可以输入自定义文本。我需要用户不能输入自定义文本,但只能在文本与其中一个选项匹配时输入。技术是使用.blur来检查是否存在有效的建议 var myData = ["sugg1" , "sugg2" ]; // all data required for typeahead $("#search").typeahead({source : myData}) .blu

如何使用Twitter的Typeahead插件禁用自由文本输入?我找到的所有示例和配置,用户都可以输入自定义文本。我需要用户不能输入自定义文本,但只能在文本与其中一个选项匹配时输入。

技术是使用.blur来检查是否存在有效的建议

var myData = ["sugg1" , "sugg2" ]; // all data required for typeahead

$("#search").typeahead({source : myData})
                   .blur(validateSelection);

function validateSelection() {
    if(source.indexOf($(this).val()) === -1) 
        $("#search").val("");
}

也许我不理解你的问题,但是如果用户不能输入,那么前面的输入有什么意义呢?这是一个相当典型的行为。我建议从可用性的角度重新考虑。也就是说,要禁用它,您需要重新检查每个键的输入,看看它是否与结果集匹配。@ScottMurphy重点是让用户键入,选项将自动完成,但它需要是选项之一,而不是自由文本。Twitter的typeahead让用户更容易选择选项:他们不需要点击和向下滚动,而是可以输入和选择(但我需要选择特定的选项,而不是虚构的选项)。我同意@DA的观点,从可用性角度来看,删除某人输入的字符可能不是最好的主意。最好让Typeahead插件做它擅长的事情,并显示建议——如果没有匹配项,则不会显示任何建议。问题是,如果它是一个文本字段,这意味着我可以键入任何我想要的内容。所以你应该让他们去。如果没有匹配项,也许可以将其视为错误状态,并通过消息传递进行处理。处理它的一种常见方法是不使用文本字段,而是使用带有可搜索筛选器的下拉列表:它是否有效,我前一段时间尝试过它,所以我不确定,但我为sure做了类似的操作。同样的问题,您如何处理远程和多个数据源的此解决方案?我想不出来。。