Jquery对话框被发布在表单之外,但我需要在对话框按钮上单击提交表单

时间:2013-04-04 20:51:51

标签: jquery asp.net-mvc

这很棘手,我无法在Dailog框中单击发布到我的表单。对话框一旦打开它在窗体外面发布,因此对话框中的按钮单击将不会将窗体提交给服务器。我尝试将对话框附加回表单,但表单将自动发布。当用户单击对话框上的任一按钮时,我只需要发布到表单。感谢您的帮助

主视图

@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
{
    <div id="main">
        @Html.Partial("_RunLogEntryPartialView", Model)
    </div>
}

部分视图

<button name="submit" class="art-button" type="submit" value="Upload" onclick="test();return false;"
    style="width: 100px">
    Upload</button>


 function test() {
        var UploadDialog;

        UploadDialog = $("#uploadConfirmation").dialog({
            title: "Yes or No",
            resizable: false,
            modal: false,
            buttons: {
                "Yes": function () {
                    $(this).dialog("close");
                    $("#hiddenInput").val("Normal");
                    $("#form").submit();
                },
                "No": function () {
                    $(this).dialog("close");
                    $("#hiddenInput").val("Buffer");
                }
            }
        });

        //        UploadDialog.closest("div.ui-dialog").appendTo("#form");
    }

1 个答案:

答案 0 :(得分:0)

不要考虑从对话框和原始表单中发布数据,只需使用表单值填充原始表单上的值,关闭对话框,然后通过帖子从“是”按钮操作发布原始表单。

如果你需要处理很多值,你可以简单地序列化对话框中的字段,然后使用每个字段将它们发布回原始表单。如果您不希望用户以原始格式查看对话框中的值,则将它们包含为隐藏字段,或者只使用对话框中的序列化值和帖子中的表单。

或者,您也可以在原始表单的对话框中设置单独的表单,然后提交两个序列化值以处理表单。这实际上可能是参与度最低的方法。

您可能想要考虑的一件事是,使用对话框来中断填写表单的体验并不是一个很好的用户模式。将对话视为一个过程的关键中断,理想情况下,只有当您必须因特定原因(例如警告)而停止用户时才会使用该对话。只需让他们通过对话框添加更多信息就可以通过可扩展区域以更简单的方式完成,例如使用show / hide。