Не могли бы вы просто сфокусировать свой диапазон? Добавление атрибута tabindex
к нему сделает его фокусируемым (если вы не хотите, чтобы он получал фокус через Tab и Shift + Tab, используйте "-1"
в качестве значения).
Я не смог запустить ваш пример (jsFiddle, кажется, не в сети), но я попытался воспроизвести его и заставил работать - в основном:
HTML
<span id="myspan" tabindex="-1">abcd</span>
<span id="myvalue"></span>
JavaScript
$('#myspan').click(function() {
var target = $('#myvalue');
$(this).autocomplete({
minLength:0,
source: ['Apple','Banana','Strawberry'],
select: function(event, ui) {
target.html(ui.item.value);
}
})
$(this).autocomplete("search","").focus();
}).blur(function() {
var $this = $(this);
setTimeout(function() { $this.autocomplete("close") },0);
});
Это не идеально - иногда автозаполнение не исчезает, даже если диапазон теряет фокус, и я не мог понять, почему. Но это начало ...
Редактировать: я забыл закрытие setTimeout ... Теперь оно должно работать для всех случаев.