sil*_*ntw 5 ajax jquery json jquery-ui jquery-ui-autocomplete
想象一下包含以下数据的json文件:
[
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
},
{
color: "blue",
value: "#00f"
},
{
color: "cyan",
value: "#0ff"
}
]
Run Code Online (Sandbox Code Playgroud)
使用jQuery的自动完成方法,我希望它能够将颜色显示为选项,以便在输入上选择和插入值.
<input type="text" name="selector" id="selector" />
<input type="text" name="color" id="color" />
<input type="text" name="value" id="value" />
Run Code Online (Sandbox Code Playgroud)
以上不需要介绍.选择对的颜色的搜索,input.color用色彩值,并input.value与价值的价值.
编辑: 我有这个JSON数据:
[{
"label": "Sec\u00e7\u00e3o 1",
"value": "1"
}, {
"label": "Sec\u00e7\u00e3o 2",
"value": "2"
}, {
"label": "Sec\u00e7\u00e3o 3",
"value": "3"
}, {
"label": "Sec\u00e7\u00e3o 4",
"value": "4"
}]
Run Code Online (Sandbox Code Playgroud)
这个HTML:
<input type="text" id="name" />
<input type="text" id="value" />
Run Code Online (Sandbox Code Playgroud)
这个jQuery:
$(document).ready(function(){
$("#name").autocomplete({
source: "json.php",
select: function (event, ui) {
$("#name").val(ui.label);
$("#value").val(ui.value);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我按照安德鲁的回答,它提示我选择数据,但如果我提醒ui.label和ui.value变量,则说"未定义".我错过了什么?
Edit2: 假设我有这个HTML:
<input type="text" class="name" />
<input type="text" class="value" />
<input type="text" class="name" />
<input type="text" class="value" />
Run Code Online (Sandbox Code Playgroud)
是否可以使用相同的.autocomplete()方法处理多个选择器?比如,选择我想要的标签input.name,只更新input.value旁边的标签?
[input.name] [input.value]
^我选择^更新
它旁边的标签值
[input.name] [input.value]
^这保持不变^
And*_*ker 13
使用远程数据源:
$("#selector").autocomplete({
source: function (request, response) {
$.ajax({
url: "my_server_side_resource.php",
type: "GET",
data: request,
success: function (data) {
response($.map(data, function (el) {
return {
label: el.color,
value: el.value
};
}));
}
});
},
select: function (event, ui) {
// Prevent value from being put in the input:
this.value = ui.item.label;
// Set the next input's value to the "value" of the item.
$(this).next("input").val(ui.item.value);
event.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
$.ajax根据需要调整呼叫.此示例将生成对您的PHP资源的请求,如下所示:
my_server_side_resource.php?长期= XYZ
如果您可以控制服务器端代码,则可以将返回的数据更改为如下所示:
[
{
label: "red",
value: "#f00"
}, /* etc */
]
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用字符串,即服务器端资源的名称source:
$("#selector").autocomplete({
source: "my_server_side_resource.php",
select: /* same as above */
});
Run Code Online (Sandbox Code Playgroud)
使用服务器端资源查看带有JSONP示例的远程控制器的完整示例.
编辑:有关使用本地数据的工作演示,请参阅此示例:http://jsfiddle.net/SMxY6/