0

我必须根据条件使用最小长度。(我自己尝试过它也不起作用,无论如何)

“必需”规则没有问题。如果条件正常,我可以看到必需的消息,“必需”规则按预期工作,我也可以在控制台中看到“快乐的一天”。

但即使我可以在控制台中看到“最小长度 5”,它的行为就像表格是可以的。

我哪里错了?谢谢。

if($('form#form_validation_reg_generate_user').valid({


                                        rules: {

                                            'userPassword':{
                                                required:(function () {
                                                    if($('#userPassword').val().length >0 ) {
                                                        console.log('happy day');
                                                        return true;
                                                    }
                                                    else{
                                                        console.log('happy day false');
                                                        return false;
                                                    }
                                                    })(),
                                                minlength:(function () {
                                                    if($('#userPassword').val().length >0 ) {
                                                        console.log('min length 5');
                                                        return 5;

                                                    }
                                                    else{
                                                        console.log('min length 0');
                                                        return 0;
                                                    }
                                                    })()          

                                            }

                                        }

                                    }))
4

1 回答 1

0

你的代码全错了:

if ($('form#form_validation_reg_generate_user').valid({
    // your rules
}));

您正在.valid().validate(). 你不应该在里面声明任何东西.valid(),你不能把.validate()里面的条件。

.validate()被调用一次以初始化表单上的插件。它不是一种按需触发验证的方法。初始化后,表单将根据插件中内置的各种事件回调自动验证,例如submit, onkeyup,onfocusout和 select, button & checkbox click

要以编程方式执行验证测试,您可以调用内置.valid()方法,该方法非常类似于submit事件,因为它将触发整个表单的验证测试,并且表单将显示任何错误。 .valid()还将返回一个布尔值truefalse指示表单是否通过了验证测试。在您的示例/案例中,您似乎不需要使用此方法。


您的规则代码不合逻辑:

required: (function () {
    if ($('#userPassword').val().length > 0) {
        return true;
    } else {
        return false;
    }
},
minlength: (function () {
    if ($('#userPassword').val().length > 0) {
        return 5;
    } else {
        return 0;
    }
}

您的规则逻辑完全没有意义,这些功能会导致插件阻塞。userPassword第一条规则是说required只有userPassword包含某些东西。这在逻辑上与“可选”相同。您的第二条规则是说minlengthofuserPassword5userPassword包含某些内容时……再次,这没有任何意义。如果该字段是可选的,那么您只需声明minlength并且默认情况下,它仅适用于该字段包含某些内容时。(您没有显示您的 HTML,所以我只假设它userPassword是同一字段的name和。)id

试试这个:

$(document).ready(function () {

    $('form#form_validation_reg_generate_user').validate({
        rules: {
            userPassword: {
                minlength: 5
            } 
        }, 
        submitHandler: function (form) { // for demo
            alert('valid form submission'); // for demo
            return false; //form demo
        }
    });

});

演示:http: //jsfiddle.net/7jLnu/

否则,如果您还想要该字段required

rules: {
    userPassword: {
        required: true,
        minlength: 5
    } 
},

http://jsfiddle.net/qZzZ6/

于 2013-03-10T15:17:16.423 回答