我正在使用Devbridge autocomplete jQuery插件,而且在选择建议时如何防止模糊事件被触发时我感到非常难过。我对JavaScript的方式并不强烈,所以我希望有人可以指出我哪里出错了。
以下是设置:
城市HTML(由ASP.net MVC呈现):
https://brattlefilm.us14.list-manage.com/unsub_confirm.html
自动完成设置(从$(document).ready()调用):
<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>
问题:
我的城市字段可以包含多个条目,以逗号分隔。用户应该能够选择任意数量的城市,并且只有在用户离开城市$('#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 + ",";
},
});
后才能触发模糊事件以验证列表中的所有城市。但是,如果输入“es”然后用鼠标选择建议,则会显示一条错误,指出“es”是无效的城市,表示在onblur触发之前<textarea>
未更新。使用箭头键不会导致此问题。
那么在用户故意离开城市<textarea>
之前,我怎么能阻止onblur开火呢。
请在此处查看plunker:https://plnkr.co/edit/DnJ31mq40nlXrGPtMppu?p=preview
感谢先进的任何帮助。