2013-05-14 141 views
0

以下代碼顯示「密碼不匹配」,除了空白密碼確認字段外,無論密碼字段包含什麼內容。我不確定我在哪裏錯了。JavaScript密碼匹配只匹配空白

視圖(導軌的form_for):

<%= form_for @user, :url => user_registration_path do |f| %> 
     <%= f.password_field :password, :class=>"span-live", :maxlength=>"50", :placeholder=>"Create Password*" %> 
     <%= f.password_field :password_confirmation, :class=>"span-live", :maxlength=>"50", :placeholder=>"Confirm Password*" %><br> 
     <div id="validate-password-status"></div></div> 

使用Javascript(custom.js):

$(document).ready(function() { 
    $("#user_password_confirmation").keyup(validatePassword); 
}); 


function validatePassword() { 
    var password = $("#user_password").val(); 
    var password_confirmation = $("#user_password_confirmation").val(); 



    if(password == password_confirmation) { 
     $("#validate-password-status").text("Passwords match");   
    } 
    else { 
     $("#validate-password-status").text("Passwords do not match"); 
    } 

}; 
+2

生成的HTML看起來像什麼?所有的ID都是正確的嗎?你有沒有console.log看看你比較的字符串是什麼? – epascarello 2013-05-14 03:54:09

+0

您是否嘗試過'console.log'的'password'和'password_confirmation'變量以查看它們包含的內容? – plalx 2013-05-14 03:56:03

+0

<輸入類= 「翼展活」 ID = 「USER_PASSWORD」 最大長度= 「50」 名稱= 「用戶[口令]」 佔位符= 「創建密碼*」 大小= 「50」 類型= 「密碼」> <輸入級= 「跨度活」 ID = 「user_password_confirmation」 MAXLENGTH = 「50」 NAME = 「用戶[password_confirmation]」 佔位符= 「確認密碼*」 大小= 「50」 型= 「密碼」> – 2013-05-14 06:13:01

回答

0

我想通了。此頁面是主頁上的JavaScript彈出窗口,我忘記了此頁面上的其他地方還有另一個有登錄的JavaScript彈出窗口。兩種形式都使用@user的form_for助手,因此他們的電子郵件和密碼字段具有相同的user_password(或user_email)id,因此我需要明確指定唯一的ID。

+0

我不知道我的回答是否有幫助... :) – 2013-05-17 05:27:35

0

很難調試這沒有網頁的更多的知識。我會這樣調試:

  • 輸入密碼並確認。打開Javascript控制檯並運行這個validatePassword()
  • 如果看不到任何東西,則表示此功能出現問題。
  • 如果該函數運行正常,則您的事件附件$(document).ready(....)出現問題。

我可能會看到的問題是,頁面有時得到2個或更多輸入相同的ID,所以jQuery選擇器被擰緊。您可以嘗試調試並查看。

順便說一下,你可以將$(document).ready(function(){ ... })改爲$(function(){ ... })作爲jQuery中的快捷方式。

+0

當我有密碼爲「密碼」它返回「密碼」爲console.log(user_password_confirmation)和空白爲console.log (用戶密碼)。顯然這不是意識到這個領域,但我不知道爲什麼。該ID應該是我用什麼 – 2013-05-17 00:47:44