jQuery自动完成显示值而不是标签

jQuery自动完成显示值而不是标签,jquery,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我正在使用。下面是我如何使用它 <form action="go.php" method="post"> <input id="txt" type="text" /> </form> <script> $('#txt').autocomplete({ source: [{'label': 'milan', 'value': '1'}, {'label': 'minos', 'value': '2'}] }

我正在使用。下面是我如何使用它

<form action="go.php" method="post">
    <input id="txt" type="text" />
</form>

<script>
    $('#txt').autocomplete({
         source: [{'label': 'milan', 'value': '1'}, {'label': 'minos', 'value': '2'}]
    })
</script>

当我输入“米”时,米兰和米诺斯出现了。没问题。然而,当我关注它们时,向下键的txt值会变为米兰的1value,而不是米兰。当我专注于米兰时,我如何向米兰展示。谢谢

您必须在焦点上告诉代码才能执行某些操作

$('#txt').autocomplete({
     source: [{'label': 'milan', 'value': '1'}, {'label': 'minos', 'value': '2'}],
    focus: function( event, ui ) {
      $(this).val(ui.item.label);
      return false;
    },
    select: function( event, ui ) {
     $(this).val(ui.item.label);
      return false;
    }
});

因为select事件的默认行为是显示值而不是标签,所以您只需: -如上文所述,返回false。 -或者,您可以使用event.preventDefault来阻止执行事件的默认操作,然后按如下所示写下需要执行的操作:


请参考安德鲁·惠特克(Andrew Whitaker)在这篇文章中的回答>-因为这对理解很有帮助。

我不想完全扼杀焦点。我只希望txt显示标签而不是值
$('#txt').autocomplete({
     source: [{'label': 'milan', 'value': '1'}, {'label': 'minos', 'value': '2'}],
    focus: function( event, ui ) {
      event.preventDefault();
      $('#txt').val(ui.item.label);
    },
    select: function( event, ui ) {
     event.preventDefault();
     $('#txt').val(ui.item.label);
    }
});