JavaScript密码匹配只匹配空白

JavaScript Password Match only matching on blank

本文关键字:空白 密码 JavaScript      更新时间:2023-09-26

无论密码字段包含什么,下面的代码都显示除了空白密码确认字段之外的所有内容"密码不匹配"。我不知道我哪里错了。

视图(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");  
    }
};

如果没有更多的页面知识,很难调试它。我将像这样调试它:

  • 输入密码和确认。打开Javascript控制台并运行此validatePassword()
  • 如果你看不到任何东西,这意味着这个功能有问题。
  • 如果功能正常运行,则$(document).ready(....)中的事件附件有问题。

我可能看到的问题是,页面有时有2个或更多的输入相同的id,所以jQuery选择器搞砸了。您可以试着调试它并查看。

您可以在jQuery中将$(document).ready(function(){ ... })更改为$(function(){ ... })作为快捷方式。

我明白了。这个页面是主页上的一个javascript弹出窗口,我忘了在这个页面的其他地方还有另一个javascript弹出窗口,有登录功能。这两个表单都使用@user的form_for helper,因此它们的email和password字段具有相同的user_password(或user_email) id,因此我需要显式指定一个惟一的id。