2013-02-25 64 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/