我的代码仅在我将“返回假”添加到选择函数时才起作用。如果没有这个,输入在 select 函数中设置了正确的值,然后在 select 函数结束后将其设置为 id 值。return false 解决了这个问题。
$('#sistema_select').autocomplete({
minLength: 3,
source: <?php echo $lista_sistemas;?> ,
select: function (event, ui) {
$('#sistema_select').val(ui.item.label); // display the selected text
$('#sistema_select_id').val(ui.item.value); // save selected id to hidden input
return false;
},
change: function( event, ui ) {
$( "#sistema_select_id" ).val( ui.item? ui.item.value : 0 );
}
});
此外,我在更改事件中添加了一个函数,因为如果用户在输入中写入内容或在选择一个项目后擦除项目标签的一部分,我需要更新隐藏字段,以便我不会得到错误(过时)的 ID。例如,如果我的来源是:
var $local_source = [
{value: 1, label: "c++"},
{value: 2, label: "java"}]
并且用户键入 ja 并选择带有自动完成功能的“java”选项,我将值 2 存储在隐藏字段中。如果用户从“java”中删除一个字母,例如在输入字段中以“jva”结尾,我无法将 id 2 传递给我的代码,因为用户更改了值。在这种情况下,我将 id 设置为 0。