0

我正在使用验证器插件向站点添加各种密码字段,每个字段都会在成功输入密码后发布一个相关的下载链接。问题是,当输入正确的密码时,会显示所有下载链接,而不仅仅是相关链接。所有字段都将具有相同的密码,并且随着时间的推移会添加更多文件,我只是想弄清楚如何只显示相关的下载链接而不是全部。
这是一个 jsfiddle(密码是“密码”):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 回答