jQuery自动完成:[对象]显示而不是值

时间:2016-01-10 10:13:06

标签: javascript jquery jquery-ui

我正在使用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)置于自动填充

  • 之外

我真的想不出别的东西放东西,所以我转向你们所有人。

谢谢! 亚历

1 个答案:

答案 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