JavaScript密码匹配仅匹配空白

时间:2013-05-14 03:42:05

标签: javascript ruby-on-rails

以下代码显示除密码确认字段外的所有内容均为“密码不匹配”,无论密码字段包含什么。我不确定我在哪里出错了。

查看(rails 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 个答案:

答案 0 :(得分:0)

如果没有更多的页面知识,很难对其进行调试。我会这样调试:

  • 输入密码和确认。打开Javascript控制台并运行此validatePassword()
  • 如果您看不到任何内容,则表示此功能出现问题。
  • 如果该功能正常运行,则$(document).ready(....)中的事件附件出现问题。

我可能会看到的问题是页面有时会获得2个或更多具有相同ID的输入,因此jQuery选择器被搞砸了。您可以尝试调试它并查看。

顺便说一句,您可以将$(document).ready(function(){ ... })更改为$(function(){ ... })作为jQuery中的快捷方式。

答案 1 :(得分:0)

我明白了。这个页面是主页上的一个javascript弹出窗口,我忘了在这个页面的其他地方还有另一个登录的javascript弹出窗口。两个表单都使用@user的form_for帮助程序,因此它们的电子邮件和密码字段具有相同的user_password(或user_email)id,因此我需要明确指定唯一的ID。