2014-10-20 75 views
0

我使用的是一个名为pStrength.jquery.js的插件,它以前正在工作,但由于某种原因它已经停止,我不确定如果我做错了什么。未提交表单的密码强度验证程序

这是代码我的网页

<cfinclude template="header.cfm"> 
    <cfparam name="ERROR" default=""> 
    <cfparam name="FORM.ACTION" default=""> 
    <cfparam name="form.NEWPASS1" default=""> 
    <Cfparam name="form.NEWPASS2" default=""> 
    <cfparam name="message" default=""> 

    <style> 
     #myElement1, #myElement2 { 
     padding:4px; 
     margin:2px; 
     border:solid 1px #999; 
     } 

     #myElement2 { 
     background-color:#036; 
     } 

    div { 
     margin-left:20px; 
     margin-top:6px; 
    } 
    .left { 
     float:left; 
    } 
    .clear { 
     clear:both; 
    } 
    </style> 


    <table border="0" cellpadding="0" cellspacing="1" width="780" class="Border" align="center"> 
    <tr> 
    <td class="Navsub" align="left" colspan="2">Reset Password</td> 
    </tr> 


    <cfif FORM.ACTION eq "CHANGE"> 
    <Cfif form.NEWPASS1 neq form.NEWPASS2> 
    <Cfset error = 1> 
    <Cfset message = "Your passwords did not match. Please retry"> 
    <Cfelse> 
     <cfquery name="update_password" datasource="#application.db#"> 
      update tbladmin set adminpass = '#form.newpass1#' where adminid = #session.adminid# 
    </cfquery> 
    <Cfset error = 0> 
    <cfset message = "Your password has been updated. You will be required to enter it the next time you login"> 
</Cfif> 

<cfoutput> 
    <form id="myForm" action="?#createuuid()#" method="post"> 
    <Cfif error neq ""> 
    <Tr> 
    <Td align="center" class="Error" colspan="2" bgcolor="##fb565d">#message#</Td> 
    </Tr> 
    </Cfif> 
    <tr> 
    <td align="right" class="Copy" valign="middle">New Password:</td> 
    <td align="left" class="Copy" valign="top"><input name="NEWPASS1" type="password" class="textblock" required="yes" message="Please enter your new password" id="myElement1" data-display="myDisplayElement1"><div class="left" id="myDisplayElement1"></div></td> 
    </tr> 
    <tr> 
    <td align="right" class="Copy" valign="middle">Confirm Password:</td> 
    <td align="left" class="Copy" valign="top"><input name="NEWPASS2" type="password" class="textblock" required="yes" message="Please re-enter your new password" id="myElement2" data-display="myDisplayElement2"><div class="left" id="myDisplayElement2">  </div></td> 
    </tr> 

    <tr> 
    <td>&nbsp;</td> 
    <td align="left"> 
    <input type="submit" name="Action" value="Change" class="submitbutton"></td> 
    </tr> 

    </form> 
    </cfoutput> 
    </table> 
    <script type="text/javascript" src="scripts/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="scripts/pStrength.jquery.js"></script> 
    <script> 
    $(document).ready(function(){ 

     $('#myForm').submit(function(){ 
      return false; 
     }); 

     $('#myElement1, #myElement2').pStrength({ 
      'changeBackground'   : false, 
      'onPasswordStrengthChanged' : function(passwordStrength, strengthPercentage) { 
       if ($(this).val()) { 
        $.fn.pStrength('changeBackground', this, passwordStrength); 
       } else { 
        $.fn.pStrength('resetStyle', this); 
       } 
       $('#' + $(this).data('display')).html('Your password strength is ' + strengthPercentage + '%'); 
      }, 
      'onValidatePassword': function(strengthPercentage) { 
       $('#' + $(this).data('display')).html(
        $('#' + $(this).data('display')).html() + ' Great, now you can continue to change your password!' 
       ); 

       $('#myForm').submit(function(){ 
        return true; 
       }); 
      } 
     }); 
    }); 
    </script> 
    <cfinclude template="footer.cfm"> 

由于在事先

+3

当您在浏览器上打开调试工具时,是否在控制台中发现任何错误? – 2014-10-20 12:57:18

+0

嗨!我使用Firebug(Firefox插件),没有错误,只有两个警告。 1-“ 密码字段存在于不安全(http://)页面上,这是一种安全风险,允许用户登录凭证被盗。 2-“密码字段以不安全(http://)表单操作的形式存在,这是一种安全风险,允许用户登录凭据被盗用。” – user3917244 2014-10-20 13:14:51

+0

当我提交表单Firefox给我一个弹出窗口询问我想更改密码的帐户时,我然后选择我登录的帐户,但没有任何反应 – user3917244 2014-10-20 13:20:16

回答

2

因为你不删除其他提交的事件,你只是追加到它。

这不会覆盖您之前定义的返回错误版本。

$('#myForm').submit(function(){ 
    return true; 
}); 

你要么需要将其删除

$('#myForm').off("submit").submit(function(){ 
    return true; 
}); 

或更好,但不分配一个新的功能,使用布尔值。

var isValid = false; 
$('#myForm').submit(function(){ 
    return isValid; 
}); 

并在验证检查中,将其设置为true或false。

+0

嗨Epascarello,我现在有一个问题,即使我的值是无效的表单正在提交。我删除了代码,并用“$('#myForm')。off(”submit“)替换它。submit(function(){ return true; });” – user3917244 2014-10-20 14:59:29

+0

你可能会告诉我你将如何做第二个选择?我的JavaScript并不是很好,因为我的同事通常会照顾到这一点,今天他生病了,所以我一直坚持下去 – user3917244 2014-10-20 15:02:01