0

バリデータ プラグインを使用してさまざまなパスワード フィールドをサイトに追加しています。それぞれのフィールドは、パスワードが正しく入力されると、関連するダウンロード リンクを解放します。問題は、正しいパスワードを入力すると、関連するリンクだけでなく、すべてのダウンロード リンクが表示されることです。すべてのフィールドに同じパスワードが設定され、時間の経過とともにさらに多くのファイルが追加されます。すべてではなく、関連するダウンロード リンクのみを表示する方法を見つけようとしています。
ここに jsfiddle があります (パスワードは「password」です): http://jsfiddle.net/rqGWK/

jQuery:

jQuery(document).ready(function(){

jQuery(".article-form").hide();
jQuery(".download-file").hide();

jQuery('.article-link').click(function() {
        jQuery(this).siblings('.article-form').fadeIn();
    });


    jQuery.validator.addMethod("pw_check", function (value) {
        return (value == 'password');
    }, "Invalid password");


    jQuery(".article-form").validate({
        rules: {
            password: {
                required: true,
                pw_check: true
            }
        },
        submitHandler: function (form) {
            jQuery(".article-form").hide();
            jQuery(".download-file").fadeIn("slow");
        }
    }); 

}); 
4

2 に答える 2

1

コンテンツを保護するためのツールとして jQuery やクライアント側のコードを使用することはお勧めしません。それは真のセキュリティではありません。

しかし、あなたの質問に答えるには..を探し.download-fileて関数.parent()をラップするだけで.validate()、各フォームが検証されます。

デモを更新しました。

jQuery('.article-link').click(function () {
    if(jQuery(this).siblings('.download-file').css('display')=='none')
       jQuery(this).siblings('.article-form').fadeIn();
});

jQuery(".article-form").each(function () {
    jQuery(this).validate({
        rules: {
            password: {
                required: true,
                pw_check: true
            }
        },
        submitHandler: function (form) {
            jQuery(form).hide();
            jQuery(form).siblings(".download-file").fadeIn("slow");
        }
    });
});
于 2013-03-06T21:46:38.963 に答える
0

このようなもの?

デモビュー

jQuery(document).ready(function(){

 jQuery(".article-form").hide();
 jQuery(".download-file").hide();

var actual;
var validates = [];

 jQuery('.article-link').click(function() {
    actual = $(this).closest('.article-download');
if(!validates[actual.index()]){
    $(".article-form").hide()
    $(".article-form").eq(actual.index()).fadeIn();
}
});


jQuery.validator.addMethod("pw_check", function (value) {
    return (value == 'password');
}, "Invalid password");


jQuery(".article-form").validate({
    rules: {
        password: {
            required: true,
            pw_check: true
        }
    },
    submitHandler: function (form) {
        validates[actual.index()] = true;
        jQuery(".article-form").hide();
        jQuery(".download-file").eq(actual.index()).fadeIn("slow");
    }
 }); 

}); 

PS: クライアント側はバイパス可能です。サーバー側の制御を行うことを覚えておいてください

于 2013-03-06T21:53:09.640 に答える