【问题标题】:$('#MyForm').valid() always returning false$('#MyForm').valid() 总是返回 false
【发布时间】:2014-10-18 06:45:13
【问题描述】:

我正在尝试在 mvc razor 中使用 ajax post 发布我的表单。我正在尝试在发布到数据库之前验证表单。但是即使表单是有效的,它也会阻止表单发布。

$(function () {
    $('#MyForm').submit(function () {
        if ($('#MyForm').valid()) {
        //$("#divLoading").show();
        $.ajax({
            type: "POST",
            url: '@Url.Action("Something", "Something")',
            data: $('#MyForm').serialize(),
            dataType: 'json',
            error: function (xhr) {
                $("#Message").text(xhr.statusText);
                $('#divLoading').hide('fast');
            },
            success: function (result) {
                //$('#divLoading').hide('fast');
                if (result.IsSuccess) {
                    $("#Message").html(result.Message);
                    $('#MyForm')[0].reset();
                }
            }
        });
        }
    });
});

开始表单包含

@using (Ajax.BeginForm("Something", "Something", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST" }, new { @id = "MyForm" }))
{
}

提前致谢

【问题讨论】:

  • 为什么会有 ProviderForm 和 MyForm?
  • 尝试在if语句之前调用$(this).validate();
  • 我认为你应该改变你的方法。首先尝试检查表单是否有效,然后在它有效之后提交它,我认为没有理由做你想做的事情。如果它无效,任何地方的表单都不会提交

标签: jquery asp.net-mvc-5 razor-2 jquery-post


【解决方案1】:

您的问题是您仍然使用表单默认操作,因此页面将在获得 ajax 响应之前重新加载。试试这个:

$('#MyForm').submit(function (event) {
event.preventDefault();

if ($('#MyForm').valid()) {
    //$("#divLoading").show();
    $.ajax({
        type: "POST",
        url: '@Url.Action("Something", "Something")',
        data: $('#MyForm').serialize(),
        dataType: 'json',
        error: function (xhr) {
            $("#Message").text(xhr.statusText);
            $('#divLoading').hide('fast');
        },
        success: function (result) {
            //$('#divLoading').hide('fast');
            if (result.IsSuccess) {
                $("#Message").html(result.Message);
                $('#MyForm')[0].reset();
            }
        }
    });
}

区别在哪里:

$('#MyForm').submit(function (event) {
    event.preventDefault();

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2021-11-05
    • 2018-11-05
    • 2019-05-06
    • 2017-04-29
    相关资源
    最近更新 更多