我有一个 typeAhead 函数(使用twitter typeahead库),当我输入第一个字母时,它会加载一组 json 文件。
这些 json 文件被命名为“words_a.json”、“words_b.json”等。它们包含以字母 A、B、C 等开头的每个荷兰语单词。
我面临的问题是:
1) 只要我在“#search-box”中输入第一个字符,输入字段上的焦点就会丢失。这是由于' jquery.one() '函数。有什么办法可以防止这种情况发生吗?
2)我不能使用' jquery.keypress() ',因为它会调用你输入的每个字符的 json 文件。我只想为第一个字符调用 json 文件。它应该加载以该字符开头的所有单词。
3) 'jquery.one()' 的另一个缺点是,一旦我找到我要查找的单词,我就想开始搜索一个新单词。所以我删除了输入字段中的每个字符。但是,它不会为您键入的第一个字符加载另一个 json 文件,因为 'jquery.one()' 已经触发一次并且已经加载了一个 json 文件。当从输入字段中删除所有字符时,有什么方法可以避免这种行为并重新启动该功能?
这是我的代码:
<script>
$(document).ready(function() {
$('#search-box').one('keyup', function() {
var character = $('#search-box').val().substring(0, 1);
var chr = character.toLowerCase();
//console.log(chr);
$.getJSON('words/words_' + chr + '.json', function(wordsArray){
//console.log(wordsArray);
$('#search-box').typeahead({
name: 'words',
//local: [],
local: wordsArray,
limit: 10
}); // close typeAhead function
}); // close getJSON
}); // close search-box keyup function
$('#search-box').bind('typeahead:selected', function(obj, value) {
//console.log(value.value);
$('#resultaten').append('<a href="#" onClick="speak("'+value.value+'", "nl")">' + value.value + '\
<img src="img/speaker.png" alt="speaker"/></a><br />');
}); //close typeahead selected selected function
$('#search-box').typeahead().destroy();
}); // close document.ready
</script>
<form class="form-search">
<h2 class="form-search-heading">Zoek in OpenTaal woordenlijst</h2>
<input type="text" class="input-block-level" placeholder="Zoekterm" id="search-box">
<div id="resultaten"></div>
</form>