0

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

查看(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");  
    }

};
4

2 回答 2

0

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

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

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

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

于 2013-05-15T02:46:59.870 回答
0

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

于 2013-05-17T01:04:43.677 回答