将数据传递给 jQuery 模态然后打开它
Pass data to jQuery modal and open it then
我有一个项目列表,每个项目都包含添加新评论的选项。所以我有这个按钮,我可以在其中显示模式以输入特定项目的新评论。每个项目的唯一标识符是它的 commissionNumber:
@foreach (var item in listofentities)
{
<div class="pull-right">
<a href="javascript:void(0);" id="commentDialogOpener_@item.CommissionNumber" onclick="OpenCommentModal(e)" data-id="@item.CommissionNumber"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
</div>
}
<div id="newCommentDialog" title="New Comment">
<form id="commentForm" asp-action="AddComment">
<input type="hidden" id="commissionNumber" name="commissionNumber"/>
<textarea id="comment" name="comment" rows="4" style="width: 100%; height: 95%;"></textarea>
<label id="EmptyTextAreaWarningLabel" hidden style="color: red;">Please enter a comment</label>
</form>
</div>
要打开 DIV
以输入新评论,我使用 onclick
方法和为每个项目提供的 link。我尝试将 link 的 data-id
字段移交给新评论模式中的隐藏变量。这是 JS 部分:
$(document).ready(function () {
$(function () {
$("#newCommentDialog").dialog({
autoOpen: false,
modal: true,
buttons: {
"OK": function () {
if ($("#comment").val() == null || $("#comment").val().trim() == '') {
// textarea is empty
$("#EmptyTextAreaWarningLabel").show();
}
else {
document.getElementById("commentForm").submit();
}
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
});
function OpenCommentModal(e)
{
alert(e.Value);
$('#commissionNumber').val() = ??
$("#newCommentDialog").dialog("open");
}
这就是我被困的地方。我不知道如何将事件数据传递给 OpenCommentModal 函数。我需要读取点击来自的元素的 ID,以将 @item.commissonNumber 后面的值传递给模态中的隐藏变量。我不知何故迷失在这里,因为我不知道在哪里完成。 Intellisense 没有为我提供有关 JS 事件元素的任何帮助...
我收到的唯一错误消息是
Uncaught ReferenceError: e is not defined
指的是我用onclick
-routine
传递的参数e
您可以将 id 传递到您的点击函数中:
<a href="javascript:void(0);" id="commentDialogOpener_@item.CommissionNumber" onclick="OpenCommentModal(this.id)" data-id="@item.CommissionNumber"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
在您的点击功能中,您可以使用您的 ID 并将其存储在数据 属性 中,例如名称为“id”。
function OpenCommentModal(id)
{
$("#newCommentDialog").data("id", id).dialog("open");
}
在您的对话代码中,您现在可以这样读出来:
$('#newCommentDialog').data("id");
我有一个项目列表,每个项目都包含添加新评论的选项。所以我有这个按钮,我可以在其中显示模式以输入特定项目的新评论。每个项目的唯一标识符是它的 commissionNumber:
@foreach (var item in listofentities)
{
<div class="pull-right">
<a href="javascript:void(0);" id="commentDialogOpener_@item.CommissionNumber" onclick="OpenCommentModal(e)" data-id="@item.CommissionNumber"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
</div>
}
<div id="newCommentDialog" title="New Comment">
<form id="commentForm" asp-action="AddComment">
<input type="hidden" id="commissionNumber" name="commissionNumber"/>
<textarea id="comment" name="comment" rows="4" style="width: 100%; height: 95%;"></textarea>
<label id="EmptyTextAreaWarningLabel" hidden style="color: red;">Please enter a comment</label>
</form>
</div>
要打开 DIV
以输入新评论,我使用 onclick
方法和为每个项目提供的 link。我尝试将 link 的 data-id
字段移交给新评论模式中的隐藏变量。这是 JS 部分:
$(document).ready(function () {
$(function () {
$("#newCommentDialog").dialog({
autoOpen: false,
modal: true,
buttons: {
"OK": function () {
if ($("#comment").val() == null || $("#comment").val().trim() == '') {
// textarea is empty
$("#EmptyTextAreaWarningLabel").show();
}
else {
document.getElementById("commentForm").submit();
}
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
});
function OpenCommentModal(e)
{
alert(e.Value);
$('#commissionNumber').val() = ??
$("#newCommentDialog").dialog("open");
}
这就是我被困的地方。我不知道如何将事件数据传递给 OpenCommentModal 函数。我需要读取点击来自的元素的 ID,以将 @item.commissonNumber 后面的值传递给模态中的隐藏变量。我不知何故迷失在这里,因为我不知道在哪里完成。 Intellisense 没有为我提供有关 JS 事件元素的任何帮助...
我收到的唯一错误消息是
Uncaught ReferenceError: e is not defined
指的是我用onclick
-routine
您可以将 id 传递到您的点击函数中:
<a href="javascript:void(0);" id="commentDialogOpener_@item.CommissionNumber" onclick="OpenCommentModal(this.id)" data-id="@item.CommissionNumber"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a>
在您的点击功能中,您可以使用您的 ID 并将其存储在数据 属性 中,例如名称为“id”。
function OpenCommentModal(id)
{
$("#newCommentDialog").data("id", id).dialog("open");
}
在您的对话代码中,您现在可以这样读出来:
$('#newCommentDialog').data("id");