从Devbridge自动完成中选择建议时防止onblur

时间:2018-06-05 01:08:20

标签: jquery autocomplete

我正在使用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

感谢先进的任何帮助。

0 个答案:

没有答案