验证程序jquery不使用updatepanel

时间:2015-07-16 15:20:12

标签: jquery asp.net

大家好,我的问题很简单,但我是新手使用jquery。下一个脚本工作正常,但是当我使用updatepanel时,验证不起作用并且事件clic正在触发。我希望有人可以帮助我

<script type="text/javascript">
$(document).ready(function() {

    $.validator.addMethod("match", function(value, element) {
        return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i.test(value);
    }, "Por favor ingrese un email válido.");

    $("#frmLogin").validate({
        rules: {
            //This section we need to place our custom rule   
            //for the control.  
            <%=inputEmail.UniqueID%>: {
                required: true,
                match: true,
                maxlength: 100
            },
            <%=inputPassword.UniqueID%>: {
                required: true,
                maxlength: 10
            },
        },
        messages: {
            //This section we need to place our custom   
            //validation message for each control.  
            <%=inputEmail.UniqueID%>: {
                required: "Ingrese un email",
                match: "Ingrese un email válido",
                maxlength: "Máximo 100 caracteres"
            },
            <%=inputPassword.UniqueID%>: {
                required: "Ingrese un password",
                maxlength: "Máximo 10 caracteres"
            },
        },
    });

});
</script>

2 个答案:

答案 0 :(得分:0)

使用此

<script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);
    function initializeRequestHandler(sender, args) {
        if (args.get_postBackElement().id == '<%= NameYourButton.ClientID%>' && $("#NameYourForm").valid() !== true) {
         args.set_cancel(true);
     }
 }
</script>

答案 1 :(得分:0)

更新面板与$(document).ready()的效果不佳。问题是在部分回调上更换了更新面板,但$(document).ready()没有被调用,因此您的事件绑定将丢失。解决此问题的一种方法是使用PageRequestManager重新订阅。

$(document).ready(function() {
    // bind like normal
});

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
    // re-bind your events here
});

请注意,只有页面上有更新面板时才能使用PageRequestManager。