pun*_*ish 24 jquery-ui-autocomplete
jQuery UI自动完成的一个潜在的简单问题是让我感到困惑.我的来源是
var ac = [
{
label: "One Thing",
value: "One-Thing"
},
{
label: "Two Thing",
value: "Two-Thing"
},
]
Run Code Online (Sandbox Code Playgroud)
我正在调用小部件
$(function() {
$( "#search" ).autocomplete({
source: PK.getAutocompleteSource(),
focus: function( event, ui ) {
$("#search").val(ui.item.label);
return false;
},
select: function( event, ui ) {
$("#search").val(ui.item.label);
PK.render(ui.item.value);
}
});
});
Run Code Online (Sandbox Code Playgroud)
一切正常.当我#search输入输入字段时,匹配标签会显示在下拉列表中,当我select执行正确的搜索时.当我使用箭头键(或鼠标)在下拉列表中选择不同的项目时,小部件甚至会label在#search输入字段中显示.除了,当我按下Enter键时,小部件#search用value而不是填充输入字段label.所以这个领域显示的是One-Thing而不是One Thing.
我怎么能纠正这个?当然,我期待的是更合理的行为,不是吗?
Kev*_*ios 45
如果你想让标签成为你的价值,那就让源头了
var ac = ["One Thing", "Two Thing"]
Run Code Online (Sandbox Code Playgroud)
或者,selectautocompletes默认操作的方法是将value对象(如果指定)作为输入值.你也可以放入event.preventDefault()select函数,它会把标签作为值(就像你一样)
select: function( event, ui ) {
event.preventDefault();
$("#search").val(ui.item.label);
PK.render(ui.item.value);
}
Run Code Online (Sandbox Code Playgroud)
小智 20
如果您希望您的标签在onFocus和onSelect文本框中成为您的值,请使用以下代码:
select: function(event, ui) {
$('#hiddenid').val(ui.item.value);
event.preventDefault();
$("#search").val(ui.item.label); },
focus: function(event, ui) {
event.preventDefault();
$("#search").val(ui.item.label);}
Run Code Online (Sandbox Code Playgroud)
我错过了onFocus事件(仅设置onSelect事件).因此,该值继续显示在文本输入中.
我仍然遇到箭头键显示值的问题。所以我实际上发现将值和标签都分配给标签更好,然后将值放在数据的第三个属性上。例如,让我们把它放在 id 上。
var ac = [
{
label: "One Thing",
value: "One Thing",
id: "One-Thing",
},
{
label: "Two Thing",
value: "Two Thing",
id: "Two-Thing"
},
]
Run Code Online (Sandbox Code Playgroud)
然后当你使用select事件时,你可以从ui中获取id:
select: function( event, ui ) {
PK.render(ui.item.id);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24995 次 |
| 最近记录: |