我正在使用jQuery UI自动完成功能从数据库中选择一个值。关于这一切的一切都很好,有一个例外。对于我的生活,我无法得到我正在写入搜索值的文本框,以便在我选择它之后显示实际值。
我已经多次阅读过这个问题的人,但是他们提出的解决方案并不适用于我。
小提琴在这里:https://jsfiddle.net/p8y7111p/
自动填充代码为:
$("#student_search").autocomplete({
source: "functions/find_student.php",
delay: 50,
minLength: 3,
select: function(event, ui) {
var name_person = ui.item.label; // this works to give me the name of the person
var house = ui.item.value.house;
var id = ui.item.value.id;
highlightStudent(name_person, id, house);
$('#student_search').val(name);
}
});
请注意,我尝试过:
将name
替换为ui.label.value
尝试将关闭或更改属性添加到自动填充,其中$('#student_search').val(name)
为其值
将$('#student_search').val(name)
置于自动填充
我真的想不出别的东西放东西,所以我转向你们所有人。
谢谢! 亚历
答案 0 :(得分:2)
您是否尝试过event.preventDefault();
?
select事件的默认行为是使用ui.item.value更新输入。此代码在事件处理程序之后运行。
只需使用event.preventDefault()
或return false
阻止对select和focus(此处未完成)的默认操作,它就可以正常工作。
$("#student_search").autocomplete({
source: "functions/find_student.php",
delay: 50,
minLength: 3,
select: function(event, ui) {
event.preventDefault();
var name_person = ui.item.label;
var house = ui.item.value.house;
var id = ui.item.value.id;
highlightStudent(name_person, id, house);
$('#student_search').val(name_person);
}
});
这是一个有效的解决方案:FIDDLE