1

私はこの検証機能を持っています:

var validator =$('#form1').validate({
    ignore: "",
    rules: {
        usu_login: { required: true },
        usu_email: { required: true },
        usu_nombre1: { required: true },
        usu_apellido1: { required: true },
        usu_fecha_nac: { required: true },
        usu_cedula: { required: true },
        usu_telefono1: { required: true },
        usu_password: { 
            required: function() { return focusout == true; }
        },
        usu_password2: {
            required: function() { return focusout == true; }
        },
        usu_password3: {
            required: function() { return focusout == true; },
            equalTo: "#usu_password2"
        }
    }
}

関数に同じifステートメントを適用してequalTo、これが思い通りに機能するようにする必要がありますが、その方法がわかりません。

誰でも方法を知っていますか?ありがとう

4

3 に答える 3

2

depends解決策は、ルールのプロパティを使用することです!!!

jQuery(function ($) {

    var focusout;
    $('#state').change(function(){
        focusout = this.checked;
    }).change();

    var validator = $('#myform').validate({
        ignore: "",
        rules: {
            usu_login: {
                required: true
            },
            usu_email: {
                required: true
            },
            usu_nombre1: {
                required: true
            },
            usu_apellido1: {
                required: true
            },
            usu_fecha_nac: {
                required: true
            },
            usu_cedula: {
                required: true
            },
            usu_telefono1: {
                required: true
            },
            usu_password: {
                required: function () {
                    return focusout == true;
                }
            },
            usu_password2: {
                required: function () {
                    return focusout == true;
                }
            },
            usu_password3: {
                required: function () {
                    return focusout == true;
                },
                equalTo: {
                    depends: function(){
                        return focusout == true;
                    },
                    param: "#usu_password2"
                }
            }
        },
        messages: {}
    });
});

デモ:フィドル

于 2013-10-25T16:05:44.200 に答える
0

あなたの場合、独自のメソッドをバリデーターに追加する必要があります

$.validator.addMethod("mehod", function(value, element) 
{
valid=false;
if(condition==true)//place your  condition
{
valid=true;
}
else
{
valid=false;
}
return this.optional(element) || valid;
},"Your own error message");

検証したい場所に配置します

このような:

rules: {
usu_login: { required: true,method: true },//here you are using your method
usu_email: { required: true }
/*other rule*/
}

これは私の場合に有効です。

于 2013-10-25T16:09:31.200 に答える
0

これを試すことができます:

var rules = {
    usu_login: { required: true },
    usu_email: { required: true },
    usu_nombre1: { required: true },
    usu_apellido1: { required: true },
    usu_fecha_nac: { required: true },
    usu_cedula: { required: true },
    usu_telefono1: { required: true },
    usu_password: { 
        required: function() { return focusout == true; }
    },
    usu_password2: {
        required: function() { return focusout == true; }
    },
    usu_password3: {
        required: function() { return focusout == true; },
        equalTo: "#usu_password2"
    }
}

if (!focusout) {
    for (key in rules) {
        delete rules[key].equalTo;
    }
}

var validator = $('#form1').validate({
    ignore: "",
    rules: rules
});

ループはすべてのルールを反復し、equalTo無視する必要がある場合は制約を削除します。

ただし、validator変更するたびにオブジェクトを再作成する必要がありますfocusout

于 2013-10-25T16:03:17.937 に答える