【发布时间】:2021-11-14 16:37:55
【问题描述】:
我有一个按钮列表,每个按钮都属于一个隐藏表单,对应的item.Id。我想在单击按钮时显示表单。为了实现这一点,我有一个 jQuery 脚本,它通过 name ($('[name="RequestSpeakButton"]')) 选择按钮并读取其 id 以了解将哪个隐藏表单设置为 visible ($("#RequestSpeak"+this.id).css("visibility", "visible"))。
当然,它不起作用。 IE。当我点击按钮时没有任何反应。
我不知道它是否重要,但document 由一个主视图和几个局部视图组成。该脚本位于主视图的脚本部分。按钮位于局部视图中,表单位于另一个局部视图中。
表单呈现如下(在局部视图中):
@foreach (AgendaItemViewModel item in Model.Agenda)
{
<div id="RequestSpeak@(item.Id)" style="visibility:hidden;">
<form asp-action="Action">
<input type="hidden" name="Id" value="@item.Id" />
<button type="submit">
Yes
</button>
<span class="btn btn-danger" onclick="javascript: document.getElementById('RequestSpeak'+@item.Id).style.visibility='hidden'">
No
</span>
</form>
</div>
}
表单的输出如下所示:
<div id="RequestSpeak57e33e17-c988-4a28-66a0-08d978345a1d" style="visibility:hidden;">
<form action="/Controller/Action" method="post">
<input type="hidden" name="Id" value="57e33e17-c988-4a28-66a0-08d978345a1d" />
<button type="submit">
Yes
</button>
<span class="btn btn-danger" onclick="javascript: document.getElementById('RequestSpeak'+57e33e17-c988-4a28-66a0-08d978345a1d).style.visibility='hidden'">
No
</span>
</form>
</div>
应该显示表单的按钮呈现如下(在另一个局部视图中):
@foreach (AgendaItemViewModel item in Model.Agenda)
{
<a name="RequestSpeakButton" id="@item.Id"
class="btn btn-primary">
Speak
</a>
}
输出如下所示:
<a name="RequestSpeakButton" id="57e33e17-c988-4a28-66a0-08d978345a1d"
class="btn btn-primary">
Speak
</a>
这是按钮的脚本:
$(document).ready(function () {
$('[name="RequestSpeakButton"]').click(function () {
alert("test"); /* Checking if the script runs. It doesn't. */
$("#RequestSpeak"+this.id).css("visibility", "visible")
});
})
我想,由于我有许多同名按钮,它们都被$('[name="RequestSpeakButton"]') 选中。我可以知道哪个被点击了吗? this.Id够了吗?
如果我放弃name,然后只选择id 的按钮,也许它会起作用。但是后面我要添加其他的按钮,对items执行不同的操作,所以我需要名称才能知道执行哪个操作。
【问题讨论】:
-
尝试将一个通用类添加到
<a>并使用它,但你的$('[name="RequestSpeakButton"]')应该可以工作。您是否检查过控制台是否有任何错误?
标签: c# jquery asp.net-core-mvc