2

我有一个有两个选择的表格,一个在左边,一个在右边。左边的一个列出要添加的项目,两个按钮,一个用于添加,一个用于删除另一个使用一点 jQuery 选择的项目。两个选择都multiple="multiple"设置了属性。

问题是,当我提交表单时,只有在右手选择中选择的项目才会发布在表单数据中,这是预期的。我添加了以下 jQuery 代码来选择提交时选择列表中的所有项目,但它仍然只在按下提交按钮之前发送单个选定项目的数据:

$("#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">&nbsp;</i>Save</button>
    | <a href="#" onclick="window.history.go(-1);">Back to previous page</a>

</form>

我在这里想念什么?

4

1 回答 1

3

我需要在按钮上使用和 onclick 事件来选择选择中的所有选项,防止默认并提交表单:

<button class="btn btn-primary" type="submit" onclick="submitForm(event)"><i class="fa fa-save">&nbsp;</i>Save</button>

function submitForm(e) {
    $("#controlGradesList option").prop("selected", true);
    e.preventDefault();
    $('#pageForm')[0].submit();
}
于 2020-04-02T13:41:32.437 回答