2013-02-25 120 views
1

我不是那么熟悉Jquery验证器插件,我试图弄清楚是否可以验证单个文本字段,即在文本字段中输入密码,如果它是平等的到'密码'(或任何密码可能),然后下载链接出现。
这里有一个的jsfiddle:http://jsfiddle.net/aSRRr/
这里是jQuery的太:jQuery验证插件问题

$.validator.setDefaults({ 
submitHandler: function(form){ 
$("#myform").hide(); 
$("#download-file").fadeIn("slow"); 
}, 
}); 


    $(document).ready(function(){ 
    $("#myform").validate({ 
    rules: { 
    password: { required: true, equalTo: "#password"}, 
    } 

}); 

    }); 


$(document).ready(function(){ 
$("#myform").hide(); 
$("#download-file").hide(); 

$("#download-button").click(function(){ 
$("#myform").fadeToggle(300); 
}); 
}); 

是否有可能验证文本字段对一个单词,在这种情况下,“密码”?

+0

的'equalTo'规则仅意味着用于比较两个不同的输入区域彼此之间的值。 – Sparky 2013-02-25 22:52:31

+1

请注意,以JavaScript存储密码不安全。任何人都可以看到密码。 – Sparky 2013-02-25 22:56:07

回答

1

重要提示:这是不是安全的。任何人都可以轻松查看任何JavaScript代码并查看密码的值。

以下回答你的问题,虽然我不建议这是一种可靠的方法来保护任何东西。


使用the jQuery Validate plugin's built-in addMethod method创建一个名为pw_check自定义规则如下:

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

然后与其他规则一起应用新规则...

rules: { 
    password: { 
     required: true, 
     pw_check: true // <-- apply your custom rule 
    } 
}, 

完全更新的jQuery代码:

$(document).ready(function() { 

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

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

    $("#myform").hide(); 
    $("#download-file").hide(); 

    $("#download-button").click(function() { 
     $("#myform").fadeToggle(300); 
    }); 

}); 

有你的HTML没有变化。

工作演示:http://jsfiddle.net/5WMNK/

2

使用addMethod功能http://docs.jquery.com/Plugins/Validation/Validator/addMethod

添加自定义的验证方法。它必须包含一个名称(必须是一个 合法的JavaScript标识符),一个基于javascript的函数和一个默认字符串消息。给回调函数的参数是: - 所述验证元件

  • 所述元件的电流值进行验证的方法,例如指定
  • 参数对于分钟:5的参数是5,对于范围:[1,5]第[1,5]

请注意:虽然诱惑 很大增加,检查它的抵靠 参数一个正则表达式的方法值,那么将它们的正则表达式 封装在它们自己的方法中要干净得多。如果您需要大量不同的 表达式,请尝试提取一个通用参数。

标记:

<div id="download-button" style="cursor: pointer;">Download File</div> 

<form id="myform"> 
    <label for="password">Password</label> 
    <input id="password" name="password" class="isPassword" /> 
    <br/> 

    <input class="submit" type="submit" value="SUBMIT" /> 
</form> 

<div id="download-file" style="cursor: pointer;">Click to Download</div> 

的jQuery:

$.validator.setDefaults({ 
    submitHandler: function(form){ 
     $("#myform").hide(); 
     $("#download-file").fadeIn("slow"); 
    }, 
}); 
$(document).ready(function(){ 
    jQuery.validator.addMethod("isPassword", function(value) { 
     if(value == 'password') 
       return true; 
      }, "Invalid password"); 
    $("#myform").validate(); 
    $("#myform").hide(); 
    $("#download-file").hide(); 
    $("#download-button").click(function(){ 
     $("#myform").fadeToggle(300); 
    }); 
}); 

确保您的输入使用类isPassword。另外请确保从您的代码中删除额外的.ready功能。

的jsfiddle:http://jsfiddle.net/aSRRr/2/