jquery ui自动完成事件计时
我需要为选择返回一个数字id,但以文字显示客户名称。我有一个用于客户id的隐藏字段和一个用于显示名称的文本输入。这算是可行的,但我更愿意改善用户体验 ajax请求返回变量数据中的客户列表,用于构建对象数组,如文档所示:jquery ui自动完成事件计时,jquery,jquery-ui,autocomplete,Jquery,Jquery Ui,Autocomplete,我需要为选择返回一个数字id,但以文字显示客户名称。我有一个用于客户id的隐藏字段和一个用于显示名称的文本输入。这算是可行的,但我更愿意改善用户体验 ajax请求返回变量数据中的客户列表,用于构建对象数组,如文档所示: values = []; $.each(data, function(index, guest) { values.push({label: guest, value: index}); }); 然后我将自动完成绑定到表单字段: $( "#customer" + num
values = [];
$.each(data, function(index, guest) {
values.push({label: guest, value: index});
});
然后我将自动完成绑定到表单字段:
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) { // set hidden field with index of selection
$( "#customerId" + numRand ).val(ui.item['value']);
},
change: function (event, ui) { // restore word label to input field
$( "#customer" + numRand ).val(ui.item['label']);
}
});
numRand用于创建半唯一标识符,因为在这个应用程序中,表单加载在jQueryUI对话框中,否则实例之间会保留值
我尝试使用更改事件而不是关闭,但结果是一样的。*在表单字段中键入至少两个字母后,菜单将正确显示,并显示名称。选择名称后,数字索引进入表单字段。当焦点移动到页面的任何其他部分时(单击后台工作),数字索引将根据需要替换为客户名称。我希望最初也显示名称
关于如何在select上显示名称,有什么建议吗?(我试着把它放在那个处理程序中,但当焦点移动时,它会立即被留在那里的id覆盖)
提前感谢您的建议
*EDIT-我错了,close事件像select事件一样被内置方法覆盖
更新:解决方案很简单:使用select事件并通过返回false覆盖内置方法:
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item['value']);
$( "#customer" + numRand ).val(ui.item['label']);
return false;
}
});
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item.value);
$( "#customer" + numRand ).val(ui.item.label);
return false;
}
});
解决方案很简单:使用select事件并通过返回false覆盖内置方法:
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item['value']);
$( "#customer" + numRand ).val(ui.item['label']);
return false;
}
});
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item.value);
$( "#customer" + numRand ).val(ui.item.label);
return false;
}
});
解决方案很简单:使用select事件并通过返回false覆盖内置方法:
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item['value']);
$( "#customer" + numRand ).val(ui.item['label']);
return false;
}
});
$( "#customer" + numRand ).autocomplete({
source: values,
minLength: 2,
select: function (event, ui) {
$( "#customerId" + numRand ).val(ui.item.value);
$( "#customer" + numRand ).val(ui.item.label);
return false;
}
});
您可能希望提供一个代码工作的示例。感谢您的提示-可以在此处看到:这里更清晰:可以在此处看到解决方案:您应该回答自己的问题,如果您解决了问题,则接受答案,这样就不会再出现在“未回答”中。:)您可能希望提供一个代码工作的示例。感谢您的提示-可以在此处看到:这里更清晰:可以在此处看到解决方案:您应该回答自己的问题,如果您解决了问题,则接受答案,这样就不会再出现在“未回答”中。:)感谢PetersenDidIt和Kit Sunde对我的第一个问题的指导。感谢PetersenDidIt和Kit Sunde对我的第一个问题的指导。