问题描述
我有一组字段是自动完成字段。设置每个变量以检测何时进行了更改,以及最终值是否与任何建议都不匹配,它将字段置于错误状态并要求用户选择现有项。这是代码:
$.each($(".autocomplete"),function () {
$(this).autocomplete({
source: $(this).attr("autocomplete-url"),autoFocus: true,//Just press enter to select top item
minLength: 0,response: function (event,ui) {
if (ui.content.length == 1) {
$(this).val(ui.content[0].value);
$(this).removeClass("is-invalid").next("span").remove(); //valid value,remove error
}
},change: function (event,ui) { //if detects a string that was not suggested (meaning does not exist in DB),clear value and show not valid
if (!(ui.item)) { //don't close the dropdown - causes ui.item to be undefined
$(this).val("");
$(this).addClass("is-invalid").after("<span class='invalid-Feedback'><strong>Please choose an existing " + $(this).attr('name') + ".</strong></span>");
}
}
});
});
这在一种情况下工作正常,除非在一种情况下-如果表单中的其他地方有错误,并且页面重新加载时出现另一种表单错误(自动完成字段中没有错误),则自动完成中最初选择的项目会瞬间显示,那么change事件将运行并删除该值,并使该字段处于错误状态,并显示消息“请选择现有项目”。
有没有办法告诉自动完成功能,它在页面重新加载时包含的值实际上是有效的,并且没有更改-它与页面重新加载之前的有效值相同?还是有人提出其他建议,例如即使重新加载页面时也抑制自动完成更改,然后在用户选择其他项目的情况下再次启用它?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)