我正在使用jQuery UI自动完成功能将数据输入到输入字段中,并通过ajax从数据库中提取值。这都是正常的自动完成。
但是,用户可以输入不在数据库中的值,我想知道如何处理它。
我正在尝试避免在更改字段时对数据库进行另一次ajax调用,以检查数据是否为新数据。由于我经常使用自动完成功能,因此我必须对许多此类检查进行编码。
如果我知道数据是新的,我可以为用户提供是否将其添加到数据库的选项,或者通知他们错误输入。
也许自动填充通知用户输入了新值。
或许有一种方法可以将用户仅限制为下拉数据。 (这会引起我认为的其他问题)
或者也许有人有更好的主意。
相关问题(或者我可以单独发布)
如果用户标记为空字段,如何触发自动填充功能打开? 将minLength的数量设置为零仍然要求用户至少按下向下箭头。
我是否可以通过编程方式触发下拉菜单,例如从向下箭头的图像中触发。
由于
答案 0 :(得分:1)
尝试close
事件。 (http://docs.jquery.com/UI/Autocomplete#event-close),如果找不到任何内容,自动完成将关闭。您可以查看事件以查看导致关闭的原因,如果是XHR,则应表示由于未找到任何项目而导致自动完成关闭。不能保证它会起作用,但它可能值得一试。
答案 1 :(得分:1)
您可以创建这样的自定义源函数:
$("field").autocomplete({
source: function(request, response) {
fetchFromDB(request.term, function(data) {
// if data.length == 0 it was not in DB
response(data);
});
}
});
现在使用fetchFromDB获取结果。
至于触发自动完成功能,您可以执行以下操作:
$("field").focus(function(event) {
var e = $.Event("keydown.autocomplete");
e.keyCode = $.ui.keyCode.DOWN;
$("field").trigger(e);
});
这应该可行,我使用类似的代码自动触发自动完成下拉列表中第一个元素的选择。