ASP.net razor pages 和 multi-select,发布 select 中的所有项目
ASP.net razor pages and multi-select, posting all items in select
我有一个有两个 select 的表格,一个在左边,一个在右边。左侧的一个用于列出要添加的项目,两个按钮,一个用于添加项目,一个用于将项目删除到另一个 select 使用一点 jQuery。两个 select 都设置了 multiple="multiple"
属性。
问题是,当我提交表单时,只有右手 select 编辑的项目 select 被发布到表单数据中,这是预期的。我在提交时将 jQuery 的以下位添加到 select select 列表中的所有项目,但它仍然只发送单个 selected 项目的数据在按下提交按钮之前:
$("#pageForm").submit(function (e) {
$("#controlGradesList option").prop("selected", "selected");
});
这是我的表单标记:
<form method="post" id="pageForm">
@Html.HiddenFor(x => x.Data.Ref)
<div class="row">
<div class="col-sm-5">
<h3>All grades</h3>
<div class="form-group">
<input type="text" id="filterBox" class="form-control" placeholder="Filter grades" />
</div>
<div class="form-group">
<select class="form-control" size="20" multiple="multiple" id="gradesList" asp-items="@(new SelectList(Model.Data.AvailableGrades, "Ref", "Display"))">
</select>
</div>
</div>
<div class="col-sm-2">
<div class="push-down-arrows">
<div class="form-group">
<input type="button" class="btn btn-primary btn-block" id="addButton" value=">>" title="Add grade to control group" />
</div>
<div class="form-group">
<input type="button" class="btn btn-primary btn-block" id="removeButton" value="<<" title="Remove grade from control group" />
</div>
</div>
</div>
<div class="col-sm-5">
<h3>Associated grades</h3>
<div class="grades-padding-top">
<div class="form-group">
<select class="form-control" size="20" multiple="multiple" id="controlGradesList" asp-for="Data.AssociatedGradeRefs" asp-items="@(new SelectList(Model.Data.AssociatedGrades, "Ref", "Display"))">
</select>
</div>
</div>
</div>
</div>
<hr />
<button class="btn btn-primary" type="submit"><i class="fa fa-save"> </i>Save</button>
| <a href="#" onclick="window.history.go(-1);">Back to previous page</a>
</form>
我在这里错过了什么?
我需要在按钮上使用 onclick 事件 select select 中的所有选项,防止默认并提交表单:
<button class="btn btn-primary" type="submit" onclick="submitForm(event)"><i class="fa fa-save"> </i>Save</button>
和
function submitForm(e) {
$("#controlGradesList option").prop("selected", true);
e.preventDefault();
$('#pageForm')[0].submit();
}
我有一个有两个 select 的表格,一个在左边,一个在右边。左侧的一个用于列出要添加的项目,两个按钮,一个用于添加项目,一个用于将项目删除到另一个 select 使用一点 jQuery。两个 select 都设置了 multiple="multiple"
属性。
问题是,当我提交表单时,只有右手 select 编辑的项目 select 被发布到表单数据中,这是预期的。我在提交时将 jQuery 的以下位添加到 select select 列表中的所有项目,但它仍然只发送单个 selected 项目的数据在按下提交按钮之前:
$("#pageForm").submit(function (e) {
$("#controlGradesList option").prop("selected", "selected");
});
这是我的表单标记:
<form method="post" id="pageForm">
@Html.HiddenFor(x => x.Data.Ref)
<div class="row">
<div class="col-sm-5">
<h3>All grades</h3>
<div class="form-group">
<input type="text" id="filterBox" class="form-control" placeholder="Filter grades" />
</div>
<div class="form-group">
<select class="form-control" size="20" multiple="multiple" id="gradesList" asp-items="@(new SelectList(Model.Data.AvailableGrades, "Ref", "Display"))">
</select>
</div>
</div>
<div class="col-sm-2">
<div class="push-down-arrows">
<div class="form-group">
<input type="button" class="btn btn-primary btn-block" id="addButton" value=">>" title="Add grade to control group" />
</div>
<div class="form-group">
<input type="button" class="btn btn-primary btn-block" id="removeButton" value="<<" title="Remove grade from control group" />
</div>
</div>
</div>
<div class="col-sm-5">
<h3>Associated grades</h3>
<div class="grades-padding-top">
<div class="form-group">
<select class="form-control" size="20" multiple="multiple" id="controlGradesList" asp-for="Data.AssociatedGradeRefs" asp-items="@(new SelectList(Model.Data.AssociatedGrades, "Ref", "Display"))">
</select>
</div>
</div>
</div>
</div>
<hr />
<button class="btn btn-primary" type="submit"><i class="fa fa-save"> </i>Save</button>
| <a href="#" onclick="window.history.go(-1);">Back to previous page</a>
</form>
我在这里错过了什么?
我需要在按钮上使用 onclick 事件 select select 中的所有选项,防止默认并提交表单:
<button class="btn btn-primary" type="submit" onclick="submitForm(event)"><i class="fa fa-save"> </i>Save</button>
和
function submitForm(e) {
$("#controlGradesList option").prop("selected", true);
e.preventDefault();
$('#pageForm')[0].submit();
}