javascript - 如何在 jQuery Ajax 中验证序列化表单?

标签 javascript jquery ajax asp.net-mvc jquery-ui

我已经创建了一个表单,我正在序列化它并将其发送到我的 MVC Action 方法............我的 jQuery Ajax 脚本看起来像这样......

$('#submit').click(function () {

    var jsonObj = $('#form').serialize();
    alert(jsonObj);

    $.ajax({
        type: "POST",
        url: '../Doctor/AddDoctor',
        data: JSON.stringify({ "doctor": jsonObj }),
        success: function (data) {
            alert(data.Message);    
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert("Error: " + errorThrown + " , Please try again");
        }
    });
    return false;



});

所以我需要在将其发送到 Action 方法之前验证此表单......我该怎么做?............ 我找到了一个代码,但我不太确定需要在哪里插入它...... 这就是代码......

$('#myform').validate({ // initialize the plugin
    rules: {
        Name: {
            required: true,
            //email: true
        },
        Charges: {
            required: true,
            //minlength: 5
        },
        WardId: {
            required: true,
            //minlength: 5
        },
        PhoneNo: {
            required: true,
            //minlength: 5
        }
    }
});

有人可以告诉我在哪里插入这个,以验证我的表单......这就是我的 MVC 表单的样子............ ........

@using (Html.BeginForm("AddDoctor", "Doctor", FormMethod.Post, new { @id = "form" }))
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4></h4>
        <hr />
        @Html.ValidationSummary(true)

        <div class="form-group">
            @*@Html.LabelFor(model => model.UserId, new { @class = "col-sm-2 control-label" })*@
            <label class="col-sm-2 control-label"> User ID</label>
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.UserId, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.UserId)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Name, new { @class = "col-sm-2 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.Name, new { @class = "form-control", @name = "Name" })
                @Html.ValidationMessageFor(model => model.Name)
            </div>
        </div>        

        <div class="form-group">
            @*@Html.LabelFor(model => model.DoctorSpecialityId, new { @class = "col-sm-2 control-label" })*@
            <label class="col-sm-2 control-label"> Doctor Speciality ID</label>
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.DoctorSpecialityId, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.DoctorSpecialityId)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Charges, new { @class = "col-sm-2 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.Charges, new { @class = "form-control", @name = "Charges" })
                @Html.ValidationMessageFor(model => model.Charges)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.WardId, new { @class = "col-sm-2 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.WardId, new { @class = "form-control", @name = "WardId" })
                @Html.ValidationMessageFor(model => model.WardId)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.PhoneNo, new { @class = "col-sm-2 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.PhoneNo, new { @class = "form-control", @name = "PhoneNo" })
                @Html.ValidationMessageFor(model => model.PhoneNo)
            </div>
        </div>        

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="button" value="Create" class="btn btn-primary" id="submit" />
            </div>
        </div>

最佳答案

您应该在发送 Ajax 请求之前验证表单,以便:

$(document).ready(function() { 
    $('#form').validate({ // initialize the plugin
        rules: {
            // all the rules
        }
    });

    $('#submit').click(function () {
        var $form = $('#form');

        if ($form.valid()) {

            var jsonObj = $form.serialize();
            alert(jsonObj);

            $.ajax({
                type: "POST",
                url: '../Doctor/AddDoctor',
                data: JSON.stringify({ "doctor": jsonObj }),
                success: function (data) {
                    alert(data.Message);    
                },
                error: function (jqXHR, textStatus, errorThrown) {
                     alert("Error: " + errorThrown + " , Please try again");
                }
           });
       } else {
            alert('form is not valid!');
       }
       return false;

    });
}

关于javascript - 如何在 jQuery Ajax 中验证序列化表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745653/

相关文章:

jquery - 可排序,可选择文本

javascript - jQuery 动画 div 不工作

php - 在 AJAX 请求中设置 cookie?

javascript - 从 AJAX 在 javascript 中创建列表

javascript - grunt 没有在 phantom 上运行 QUnit 测试

JavaScript通过数组中的循环设置时间差

javascript - slideDown 和 slideUp 错误

jquery - 在 iframe 中加载动态 url

javascript - 无法加载远程 javascript 文件是否会停止在任何浏览器中执行 javascript?

javascript - 使用 javascript 在 HTML5 Canvas 上制作单词搜索网格