使用easyAutocomplete插件,我自动填充输入字段并获取所选值并在下拉列表中显示它们。 我想要做的是,有一个隐藏字段,其值为id。
我的JSON文件返回如下内容:
{ "name": "Emily"
"id" : 1
"jobData": [
{
"id":1
"loc":"AL"
},
{
"id":2
"loc":"BG"
}
]
一旦我从用户中选择了Emily,我的下拉菜单就会填满她的工作地点。 如何在隐藏字段中保存位置的ID,以便将其发送到控制器?
这是我的JS功能:
function AutoCompleteS() {
$("#basics").keyup(function(e) {
this.query = e.target.value;
var options = {
url: function(query) {
return "/getUser/"+ query
},
getValue:"name"
list: {
onClickEvent: function() {
var value = $("#basics").getSelectedItemData();
function toArray(value){
return value.loc;
}
var allLocations=value.jobData.map(toArray);
$.each(allLocations,function(i,p){
$('#select').append($('<option></option>').val(p).html(p));
})
}
}
};
$('#basics').easyAutocomplete(options);
});
}
如何获取并传递ID?
编辑: HTML代码:
<label for="client1" class=" control-label">First Client</label> <input type="text" name="client" value="" class="form-control input-lg " id="basics"/>
<label for="sel1">Select location:</label>
<select class="form-control input-lg" id="select" >
<option></option>
<input type="text" class="hidden" />
</select>
答案 0 :(得分:0)
easyAutocomplete问题:
您的代码应该更像这样(请参阅remote data source example) - 即您只应拨打easyAutocomplete
一次:
$("#basics").easyAutocomplete({
url: function(query) {
return "/getUser/" + query;
},
getValue: "name",
list: {
// ...
}
});
HTML问题:
将input
移到select
之外,并为它们指定两个名称(以便将值提交给服务器):
<select class="form-control input-lg" id="select" name="location">
<option></option>
</select>
<input type="text" class="hidden" name="job-id" id="job-id">
要在选择值更改时设置隐藏字段的值,您需要一个更改处理程序:
function updateSelect(jobData) {
// Reset options:
$("#select")
.empty()
.append(new Option());
// Add locations:
jobData.forEach(function(job) {
$("#select").append(new Option(job.loc));
});
// Handle dropdown change:
$("#select")
.off("change")
.on("change", function() {
// Reset job id (needed when user selects blank option at top of dropdown)
$("#job-id").val("");
var selectedLocation = this.value;
jobData.forEach(function(job) {
if (job.loc === selectedLocation) {
// Copy job id to hidden field:
$("#job-id").val(job.id);
}
});
});
}
从easyAutocomplete onClickEvent处理程序调用{{1}}:
updateSelect