2013-12-21 2 views
-3
정의되지 않은

의 특성 'passwordStrength'을 설정할 수 없습니다, 그리고 첫 번째 줄에 자바 스크립트 오류가 발생 : "속성을 설정할 수 없습니다 'passwordStrength'정의의"는이 코드를

오류가되어

코드 :

window.myProject.passwordStrength = function ($, window, document) { 
var desc = new Array(); 
desc[0] = "Very Weak"; 
desc[1] = "Weak"; 
desc[2] = "Better"; 
desc[3] = "Medium"; 
desc[4] = "Strong"; 
desc[5] = "Very Strong"; 
return { 
    maxScore: 5, 
    allowedScore: 4, 
    getStrengthDescription: function(score){ 
     return desc[score]; 
    }, 
    getStrength: function(password){ 


     var score = 0; 

     //if password bigger than 6 give 1 point 
     if (password.length > 6) score++; 

     //if password has both lower and uppercase characters give 1 point 
     if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/))) score++; 

     //if password has at least one number give 1 point 
     if (password.match(/\d+/)) score++; 

     //if password has at least one special caracther give 1 point 
     if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) score++; 

     //if password bigger than 12 give an other 1 point 
     if (password.length > 12) score++; 
     return score; 
    } 
}; 
}(jQuery, window, document); 

나는 나의 페이지에서 이것을 호출 오전 :

<script> 
    $(function() { 
     $(document).ready(function() { 
      var passwordStrength = window.myProject.passwordStrength(); 
      $('#Password').keyup(function() { 
       var strength = passwordStrength.getStrength($(this).val()); 
} 
</script> 
+3

가'window.myProject' 무엇인가? – Krishna

+1

정확히 무엇이 당신의 질문입니까? –

+0

오류 메시지는 아주 자명합니다. 'window.myProject'는 정의되지 않았습니다 (즉, 존재하지 않습니다). – JJJ

답변

4

당신은 객체를 정의해야 해당 객체

window.myProject = {}; 
window.myProject.passwordStrength = function ($, window, document) { 

FIDDLE

+0

이제 오류가 발생합니다. 개체의 'passwordStrength'속성이 이 아닙니다. 함수가 아닙니다. – Sami

+0

그것은 함수가 아니기 때문입니다. 당신은 바로 실행하고 객체를 반환하는 IIFE를 가지고 있기 때문에'window.myProject.passwordStrength'의 값은 함수가 아닌 반환 한 객체 일뿐입니다. – adeneo

+1

@Sami - 여기가 어떻게되는지 -> http://jsfiddle.net/vYJVe/ – adeneo

1

에 새 속성을 정의하기 전에 당신이 그렇지 않으면 그것을하는 것이 좋습니다 것입니다. 더 단순한 & 세정제.

jsfiddle :http://jsfiddle.net/VmAHF/

JS :

(function ($) { 
    var desc = [ 'Very Weak', 'Weak', 'Better', 'Medium', 'Strong', 'Very Strong' ]; 

    var maxScore = 5, 
     allowedScore = 4; 

    $.fn.getStrength = function (password) { 
     var password = $(this).val(), 
      score = 0; 

     //if password bigger than 6 give 1 point 
     if (password.length > 6) score++; 

     //if password has both lower and uppercase characters give 1 point 
     if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/))) score++; 

     //if password has at least one number give 1 point 
     if (password.match(/\d+/)) score++; 

     //if password has at least one special caracther give 1 point 
     if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) score++; 

     //if password bigger than 12 give an other 1 point 
     if (password.length > 12) score++; 
     return score; 
    }; 

    $.fn.getStrengthDescription = function() { 
     return desc[$(this).getStrength()]; 
    }; 
})(jQuery); 

$(document).ready(function() { 
    $('#password').keyup(function() { 
     $('#strength').text($(this).getStrength()); 
     $('#strength-description').text($(this).getStrengthDescription()); 
    }); 
}); 
+0

감사합니다. 이것은 또한 좋은 해결책입니다. – Sami