asp.net - jQuery Validate 未触发回发方法

标签 asp.net jquery jquery-validate validation

我的 jQuery 验证脚本有一个奇怪的行为。

我有一个带有提交按钮的简单表单(ID = _btnSave)。 我验证三个文本字段:名字、姓氏和电子邮件。

[不起作用] - 正确填写表单后,不会触发我的提交按钮上的方法:OnClick="_btnSave_Click"。

[正在运行] - 我写下了错误的电子邮件地址,然后进行更正,单击提交按钮,调用我的服务器端方法。

总结一下情况:如果我不触发电子邮件验证,则不会触发 _btnSave_Click。

在这两种情况下页面都会刷新。

<asp:Button ID="_btnSave" OnClick="_btnSave_Click" CssClass="button big default" runat="server" Text="<%$ Resources:Resource, SAVE_CHANGES %>" />
<小时/>
$("#form1").validate({
            rules:{
                <%=_txtEmail.UniqueID %>:{ minlength:5, required:true, email:true, 
                    remote: { 
                        url: "/Services/ValidatorService.asmx/ValidateEmail",
                        dataType:"json",
                        type:"post",
                        data: { 
                            email: function() { return $("#<%=_txtEmail.ClientID%>").val();},
                            contactUID: function() { return $("#<%=_hidContactUID.ClientID%>").val();}
                        }
                    }
                },
                <%=_txtFirstName.UniqueID %>:   { required:true},
                <%=_txtLastName.UniqueID %>:    { required:true},
            },
            invalidHandler: function(form, validator) {
                errorContainer.fadeIn(); 
            },
            errorElement: "span",
            errorClass:"errortxt",
            highlight: function(element, errorClass) {
                $(element).parent().parent().addClass("error");
            },
            unhighlight: function(element, errorClass) { 
                    $(element).parent().parent().removeClass("error");
                if (this.numberOfInvalids() == 0) { 
                    errorContainer.fadeOut(); 
                }
            },
            messages: { <%=_txtEmail.UniqueID %>: { remote : "<%=EmailUsed %>" }
            },
            errorPlacement: function(error, element) {
                    error.insertAfter(element);
            }
        });

        $("input").click(function(){_defaultButton = $("#<%=_btnSave.ClientID%>");});   
    });

感谢您的帮助。

格雷格

最佳答案

我知道这个问题很老了,但我最近遇到了同样的问题,并且在网上找不到答案。在验证器选项中添加自定义提交处理程序解决了我的问题:

        $("#form1").validate({
            submitHandler: function (form) {
                __doPostBack("_btnSave", "OnClick");
            }
            // your other options
        });

关于asp.net - jQuery Validate 未触发回发方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648013/

相关文章:

asp.net - 如何在 Razor 中包含 @ 符号

c# - 如何验证内容页面中的复选框列表?

jquery - Textarea 只读但将背景颜色更改回白色

jquery.validate v. 1.9 忽略一些隐藏的输入

javascript - 无法使用 select2 读取 jQuery 验证中未定义的 nodeName 属性

asp.net - 为什么这个程序没有进入我的 ElseIf 语句——System.DBNull

c# - 使用控件 asp.net 动态填充 <td>

javascript - 查找文本区域中光标的位置

jquery - 将两个表合并为单个表JQuery

jQuery 验证插件 : validate on blur() by default