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()フォーム上のプラグインを初期化するために1回呼び出されます。これは、オンデマンドで検証をトリガーする方法ではありません。初期化されると、フォームは、プラグインに組み込まれているさまざまなイベントコールバック(、、、、、選択、ボタン、チェックボックスなど)に従って自動的に検証されsubmitます。onkeyuponfocusoutclick

プログラムで検証テストを実行するには、フォーム全体で検証テストをトリガーし、フォームにエラーが表示される という点で、イベントに非常によく似た組み込み.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あると言っています。これは、論理的には「オプション」と同じです。2番目のルールは、 ofは何かが含まれている場合にのみであると言っています...これも意味がありません。フィールドがオプションの場合は、を宣言するだけで、デフォルトでは、フィールドに何かが含まれている場合にのみ適用されます。(HTMLを表示しなかったので、同じフィールドのとの両方であると想定しています。)requireduserPasswordminlengthuserPassword5userPasswordminlengthuserPasswordnameid

代わりにこれを試してください:

$(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 に答える