实现onSubmit事件后,jQuery非侵入式验证丢失 [英] Jquery Unobtrusive validation lost after implementing onSubmit event

查看:138
本文介绍了实现onSubmit事件后,jQuery非侵入式验证丢失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ASP.NET MVC.在将事件附加到表单的onSubmit事件之前,我的验证效果很好.

I'm using ASP.NET MVC. My validation works well until I attached an event to the form's onSubmit event.

这是我的表单的外观:

@using (Html.BeginForm("Recover", "Auth", FormMethod.Post, new { Id = "RecForm", onSubmit = "return Events.Submit(this,event)" }))
{
        @Html.TextBoxFor(model => model.Email)
        @Html.ValidationMessageFor(model => model.Email)
        <input type="submit" value="Recover" />
}

Javascript(可以正常工作,只需将其放在此处,以便您可以检查其中是否有某些原因导致验证无法触发):

The Javascript (works fine, just put it here so you can check if something in this is causing the validation not to fire):

//Events
window.Events = (function () {

    // Baseline setup
    var Events = {};

    function disableAllChildren(el) {
        $(el).find(':input').attr('disabled', true);
    }
    function enableAllChildren(el) {
        $(el).find(':input').attr('disabled', false);
    }

    //Ajax submit
    Events.Submit = function (el, event) {
        event.preventDefault();
        //serialize the form before disabling the elements.
        var data = $(el).serialize();

        disableAllChildren(el);
        $(el).find('.success, .error').hide();
        $.ajax({
            url: el.action,
            type: 'POST',
            data: data,
            success: function (data) {
                //Stuff happens.
            }
        });
    };
    return Events;
})(this, this.document);

我如何取回验证?

推荐答案

我要做的是在提交表单之前检查表单是否有效.参见下面的代码:

What I do is to check if the form is valid before I submit it. See the below code :

$form = $("#myForm");

if (form.valid()) {

    form.validate();
    //other codes here

 }

如果表格有效,则发布您的数据.如果没有,则什么也不做.

If the form is valid, then post your data. If not, do nothing.

这篇关于实现onSubmit事件后,jQuery非侵入式验证丢失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆