【发布时间】:2017-06-29 20:09:22
【问题描述】:
我在一个视图中有这个代码,在一个 IEnumerable 的 foreach 循环中:
@using (Ajax.BeginForm("PoolDelta", "Characters",
new AjaxOptions
{
HttpMethod = "Get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = crName,
OnSuccess = "clearVal()"
}))
{
<form id="@(crName)Form" name="@(crName)Form">
<fieldset>
@Html.Hidden("Id",item.CharacterId)
@Html.Hidden("crNumber", "cr" + item.AssociatedLevel)
@Html.Hidden("poolName", pnameNoSpace)
@Html.Hidden("charName", item.Character.Name)
@Html.Hidden("crTextBoxName", crName)
<div class="col-sm-8">
<input type="number" name="poolDelta" id=@pnameNoSpace />
</div>
<div class="col-sm-4">
<input type="submit" name="crButton" class="btn btn-primary btn-sm" value="Use">
</div>
</fieldset>
</form>
}
我想为 OnSuccess 回调做这样的事情:
clearVal = function () {
$('this').find('input[name=poolDelta]').val('');
}
但是,“this”并不像我想象的那样指代形式。做一些研究here我看到'this'现在指的是我不熟悉的XHR。
我无法对输入的 id 进行硬编码,因为它用于动态生成的列表中。我不能只是将 JS 推到表单附近,因为它在表格内。在表格之外,我失去了任何 c# 名称的范围(比如我试图使用的 @pnameNoSpace)
还有其他方法可以让 OnSuccess 回调以某种方式获取它的关联表单吗?还是给定除 id 之外的某些属性的最接近的输入?
顺便说一句,其他一切都完美无缺。 Ajax 替换了它的目标,如果我用alert() 测试它,就会触发 OnSuccess,一切都很好,除了我想在提交后清除文本输入。我会考虑使用.click() 函数,但是当我无法通过 id 引用输入时,我不知道该怎么做。
【问题讨论】:
标签: jquery ajax asp.net-mvc