以下是我在ASP MVC视图中引用的jQuery版本
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
使用autocomplete
小部件,我希望表单根据用户从autocomplete
列表中的选择填写单独的文本框。在此页面上,用户将开始键入银行名称。一旦用户选择了他们需要的银行,则需要使用适当的值填充名称为Dynamics ID
的另一个字段。这是现在写的jQuery
$(function () {
$("#BankNameAuto").autocomplete({
source: '@Url.Action("GetBanks", "AgentTransmission")',
minLength: 1,
onComplete: function (data) {
$.getJSON('@Url.Action("GetDynamicsId", "AgentTransmission")', data, function (result) {
$('Dynamics').val(result);
})
}
});
});
以下是上面jQuery中调用的两个控制器方法
//GET
public JsonResult GetBanks(string term)
{
var banks = from c in db.BankListMaster.Where(n => n.BankName.Contains(term))
select c.BankName;
banks = banks.Distinct();
return Json(banks, JsonRequestBehavior.AllowGet);
}
//GET
public JsonResult GetDynamicsId(string term)
{
var dynamics = from c in db.BankListMaster.Where(n => n.BankName.Equals(term))
select c.LinkRepsToDynamicsUniqueId;
dynamics = dynamics.Distinct();
return Json(dynamics, JsonRequestBehavior.AllowGet);
}
用户从列表中进行选择后,我希望能够将 ID
值发送回该银行。这是BankListMaster
表的主键,其中BankName
和DynamicsId
都是字段。然而,我仍然是jQuery的新手,所以我可能无法做到这一点。
现在,我在两个控制器方法的第一行设置了一个断点。 GetBanks
断点每次都会触发,但我根本无法触发GetDynamicsId
。
编辑
由于我只在第一个查询中选择BankName
字段,因此我调整了GetDynamicsId
方法以使用银行名称作为参数。
答案 0 :(得分:1)
我通过处理“select”事件做了类似的事情。它不像你在你的例子中那样“onComplete”。具有此更改的代码将是:
$(function () {
$("#BankNameAuto").autocomplete({
source: '@Url.Action("GetBanks", "AgentTransmission")',
minLength: 1,
select: function (event, ui) {
$.getJSON('@Url.Action("GetDynamicsId", "AgentTransmission")', { term: ui.item.value }, function (result) {
$('Dynamics').val(result);
})
}
});
});