2013-12-21 3 views
-3

у меня есть этот код, и получать яваскрипт ошибки на первую линии:Невозможно установить свойство «сложность пароля» неопределенной

об ошибке «Не удается установить свойство„сложность пароля“неопределенный»

Код:

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

теперь он дает ошибку Property 'passwordStrength' объекта # не является функцией – Sami

+0

Это потому, что это не функция. У вас есть IIFE, который выполняется сразу и возвращает объект, поэтому значение 'window.myProject.passwordStrength' - это просто объект, который вы вернули, а не функция. – adeneo

+1

@Sami - Вот как вы это делаете -> http://jsfiddle.net/vYJVe/ – adeneo

1

Я предлагаю вам сделать это иначе. Simpler & очиститель.

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

ЯШ:

(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

Смежные вопросы