Я использую плагин DevQridge для автозаполнения jQuery и довольно озадачен тем, как предотвратить размытие при выборе предложения.Я не силен в способах JavaScript, поэтому я надеюсь, что кто-то может указать мне, где я ошибся.
Вот настройки:
HTML-код города (в соответствии с ASP.net MVC):
<div class="col-lg-12">
<div class="form-group">
<label for="EntryViewModel_City">City</label> <span class="pull-right"><label class="label-danger" id="EntryViewModel_CityValidation"></label> <label for="EntryViewModel_VariousCities">Various Cities</label> <input class="checkbox-inline" data-val="true" data-val-required="The Various Cities field is required." id="EntryViewModel_VariousCities" name="EntryViewModel.VariousCities" onchange="disableField(this,EntryViewModel_City)" type="checkbox" value="true" /><input name="EntryViewModel.VariousCities" type="hidden" value="false" /></span>
<textarea class="form-control uppercase-text text-box multi-line" id="EntryViewModel_City" name="EntryViewModel.City" onblur="validateLocation(this,EntryViewModel_County)" onkeyup="validateDuplicateValues(this)">PORTLAND</textarea>
</div>
</div>
Настройка автозаполнения(вызывается из $ (document) .ready ()):
$('#EntryViewModel_City').devbridgeAutocomplete({
lookup: cityList,
lookupFilter: function (suggestion, query, queryLowerCase) {
return $('#EntryViewModel_City').val().split(',').indexOf(suggestion.value) === -1;
},
delimiter: ',',
//serviceUrl: citiesUrl, //service not available from internet. Use array instead.
minChars: 2,
noCache: false,
showNoSuggestionNotice: true,
tabDisabled: false,
onSelect: function(suggestion) {
this.value = this.value + ",";
},
});
Проблема:
Поле «Мои города» может содержать несколько записей, разделенныхзапятые.Пользователь должен иметь возможность выбрать любое количество городов, и только после того, как пользователь покинет города <textarea>
, должно произойти событие размытия, чтобы проверить все города в списке.Однако, если ввести «es», а затем выбрать предложение с помощью мыши, отобразится сообщение о том, что «es» является недопустимым городом, указывая на то, что <textarea>
не обновляется до срабатывания onblur.Использование клавиш со стрелками не вызывает этой проблемы.
Итак, как бы я запретил запуск onblur до тех пор, пока пользователь намеренно не покинет города <textarea>
.
См. «Плункер» здесь: https://plnkr.co/edit/DnJ31mq40nlXrGPtMppu?p=preview
Спасибо заранее за любую помощь с этим.