我希望用户能够输入自动完成的文本框,但如果找不到,我希望它提交已写入内容的文本而不是值(在本例中为 projectId)。
我目前的想法是捕获更改事件(查看注释掉的代码),然后更新将通过模型绑定传递给 ASP.NET MVC 控制器的隐藏字段。
我的 javascript 看起来像这样:
$(function () {
$('*[data-autocomplete-url]')
.each(function () {
$(this).autocomplete({
source: $(this).data("autocomplete-url"),
minLength: 2,
select: function (event, ui) {
$(this).next('input:hidden').val(ui.item.value);
$(this).val(ui.item.label);
return false;
},
focus: function (event, ui) {
$(this).next('input:hidden').val(ui.item.value);
$(this).val(ui.item.label);
return false;
},
change: function (event, ui) {
alert(ui.item.value);
//if (ui.item.value == null) {
// $(this).next('input:hidden').val(ui.item.label);
//}
}
});
});
});
我的 HTML 如下所示:
<label for="ProjectID">Project</label>
<input type='text' data-autocomplete-url='/Projects/GetProjectsByUser' />\
<input id="ProjectID" name="ProjectID" type="hidden" value="" />
更改事件没有触发 - 知道为什么吗?